From 80c4a9a2ae922a886a33f64a02f496984d166495 Mon Sep 17 00:00:00 2001 From: Jan Date: Tue, 31 Dec 2024 12:39:09 +0100 Subject: [PATCH] fix: do not reallocate assets for dynamic asset pool --- src/ZoneCommon/Pool/AssetPoolDynamic.h | 9 --------- src/ZoneCommon/Zone/Zone.cpp | 6 +++++- 2 files changed, 5 insertions(+), 10 deletions(-) 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()