diff options
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 08763fe8aeb..881a0f87b88 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -61,6 +61,7 @@ #include "StringConvert.h" #include "TemporarySummon.h" #include "TerrainMgr.h" +#include "ThreadPool.h" #include "Timer.h" #include "TransportMgr.h" #include "Vehicle.h" @@ -10904,25 +10905,29 @@ void ObjectMgr::InitializeQueriesData(QueryDataGroup mask) return; } + Trinity::ThreadPool pool; + // Initialize Query data for creatures if (mask & QUERY_DATA_CREATURES) for (auto& creatureTemplatePair : _creatureTemplateStore) - creatureTemplatePair.second.InitializeQueryData(); + pool.PostWork([creature = &creatureTemplatePair.second]() { creature->InitializeQueryData(); }); // Initialize Query Data for gameobjects if (mask & QUERY_DATA_GAMEOBJECTS) for (auto& gameObjectTemplatePair : _gameObjectTemplateStore) - gameObjectTemplatePair.second.InitializeQueryData(); + pool.PostWork([gobj = &gameObjectTemplatePair.second]() { gobj->InitializeQueryData(); }); // Initialize Query Data for quests if (mask & QUERY_DATA_QUESTS) for (auto& questTemplatePair : _questTemplates) - questTemplatePair.second.InitializeQueryData(); + pool.PostWork([quest = &questTemplatePair.second]() { quest->InitializeQueryData(); }); // Initialize Quest POI data if (mask & QUERY_DATA_POIS) - for (auto& poiPair : _questPOIStore) - poiPair.second.InitializeQueryData(); + for (auto& poiWrapperPair : _questPOIStore) + pool.PostWork([poi = &poiWrapperPair.second]() { poi->InitializeQueryData(); }); + + pool.Join(); TC_LOG_INFO("server.loading", ">> Initialized query cache data in %u ms", GetMSTimeDiffToNow(oldMSTime)); } |