diff --git a/src/ZoneCommon/Pool/AssetPoolDynamic.h b/src/ZoneCommon/Pool/AssetPoolDynamic.h index c7ad62d9..128f2a63 100644 --- a/src/ZoneCommon/Pool/AssetPoolDynamic.h +++ b/src/ZoneCommon/Pool/AssetPoolDynamic.h @@ -29,11 +29,6 @@ public: { GlobalAssetPool::UnlinkAssetPool(this); - for (auto& entry : m_assets) - { - delete entry->Asset(); - } - m_assets.clear(); m_asset_lookup.clear(); } @@ -42,10 +37,6 @@ public: { const auto normalizedName = XAssetInfo::NormalizeAssetName(xAssetInfo->m_name); - T* newAsset = new T(); - memcpy(newAsset, xAssetInfo->Asset(), sizeof(T)); - xAssetInfo->m_ptr = newAsset; - auto* pAssetInfo = xAssetInfo.get(); m_asset_lookup[normalizedName] = pAssetInfo; m_assets.emplace_back(std::move(xAssetInfo)); diff --git a/src/ZoneCommon/Zone/Zone.cpp b/src/ZoneCommon/Zone/Zone.cpp index 88a6b226..f62e300c 100644 --- a/src/ZoneCommon/Zone/Zone.cpp +++ b/src/ZoneCommon/Zone/Zone.cpp @@ -6,8 +6,12 @@ Zone::Zone(std::string name, const zone_priority_t priority, IGame* game) m_name(std::move(name)), m_priority(priority), m_language(GameLanguage::LANGUAGE_NONE), - m_game(game) + m_game(game), + m_pools(ZoneAssetPools::CreateForGame(game->GetId(), this, priority)) { + const auto assetTypeCount = m_pools->GetAssetTypeCount(); + for (auto i = 0; i < assetTypeCount; i++) + m_pools->InitPoolDynamic(i); } Zone::~Zone()