aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Events/GameEventMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-06-11 14:04:56 +0200
committerShauren <shauren.trinity@gmail.com>2022-06-11 14:04:56 +0200
commit94d829c84fb184990e26178551d10ecdca049efd (patch)
tree2adacdef7068e3d00db2983f00e7ac6799653206 /src/server/game/Events/GameEventMgr.cpp
parent4e2b4ada0b8cb151837a6cc8f22b75baef028b13 (diff)
Core/Pools: Implemented pooling for instances
Diffstat (limited to 'src/server/game/Events/GameEventMgr.cpp')
-rw-r--r--src/server/game/Events/GameEventMgr.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp
index 72e12165505..3346b1625c1 100644
--- a/src/server/game/Events/GameEventMgr.cpp
+++ b/src/server/game/Events/GameEventMgr.cpp
@@ -416,8 +416,8 @@ void GameEventMgr::LoadFromDB()
}
// Log error for pooled object, but still spawn it
- if (uint32 poolId = sPoolMgr->IsPartOfAPool(SPAWN_TYPE_CREATURE, guid))
- TC_LOG_ERROR("sql.sql", "`game_event_creature`: game event id (%i) contains creature (" UI64FMTD ") which is part of a pool (%u). This should be spawned in game_event_pool", event_id, guid, poolId);
+ if (data->poolId)
+ TC_LOG_ERROR("sql.sql", "`game_event_creature`: game event id (%i) contains creature (" UI64FMTD ") which is part of a pool (%u). This should be spawned in game_event_pool", event_id, guid, data->poolId);
GuidList& crelist = mGameEventCreatureGuids[internal_event_id];
crelist.push_back(guid);
@@ -466,8 +466,8 @@ void GameEventMgr::LoadFromDB()
}
// Log error for pooled object, but still spawn it
- if (uint32 poolId = sPoolMgr->IsPartOfAPool(SPAWN_TYPE_GAMEOBJECT, guid))
- TC_LOG_ERROR("sql.sql", "`game_event_gameobject`: game event id (%i) contains game object (" UI64FMTD ") which is part of a pool (%u). This should be spawned in game_event_pool", event_id, guid, poolId);
+ if (data->poolId)
+ TC_LOG_ERROR("sql.sql", "`game_event_gameobject`: game event id (%i) contains game object (" UI64FMTD ") which is part of a pool (%u). This should be spawned in game_event_pool", event_id, guid, data->poolId);
GuidList& golist = mGameEventGameobjectGuids[internal_event_id];
golist.push_back(guid);
@@ -1288,7 +1288,15 @@ void GameEventMgr::GameEventSpawn(int16 event_id)
}
for (IdList::iterator itr = mGameEventPoolIds[internal_event_id].begin(); itr != mGameEventPoolIds[internal_event_id].end(); ++itr)
- sPoolMgr->SpawnPool(*itr);
+ {
+ if (PoolTemplateData const* poolTemplate = sPoolMgr->GetPoolTemplate(*itr))
+ {
+ sMapMgr->DoForAllMapsWithMapId(poolTemplate->MapId, [&itr](Map* map)
+ {
+ sPoolMgr->SpawnPool(map->GetPoolData(), *itr);
+ });
+ }
+ }
}
void GameEventMgr::GameEventUnspawn(int16 event_id)
@@ -1365,7 +1373,13 @@ void GameEventMgr::GameEventUnspawn(int16 event_id)
for (IdList::iterator itr = mGameEventPoolIds[internal_event_id].begin(); itr != mGameEventPoolIds[internal_event_id].end(); ++itr)
{
- sPoolMgr->DespawnPool(*itr, true);
+ if (PoolTemplateData const* poolTemplate = sPoolMgr->GetPoolTemplate(*itr))
+ {
+ sMapMgr->DoForAllMapsWithMapId(poolTemplate->MapId, [&itr](Map* map)
+ {
+ sPoolMgr->DespawnPool(map->GetPoolData(), *itr, true);
+ });
+ }
}
}