diff options
Diffstat (limited to 'src/server/game/Grids/ObjectGridLoader.cpp')
-rw-r--r-- | src/server/game/Grids/ObjectGridLoader.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp index bf33abacea5..9ab947aac18 100644 --- a/src/server/game/Grids/ObjectGridLoader.cpp +++ b/src/server/game/Grids/ObjectGridLoader.cpp @@ -17,6 +17,7 @@ #include "ObjectGridLoader.h" #include "AreaTrigger.h" +#include "AreaTriggerDataStore.h" #include "CellImpl.h" #include "Conversation.h" #include "Corpse.h" @@ -124,7 +125,9 @@ void LoadHelper(CellGuidSet const& guid_set, CellCoord &cell, GridRefManager<T> T* obj = new T; // Don't spawn at all if there's a respawn time - if ((obj->GetTypeId() == TYPEID_UNIT && !map->GetCreatureRespawnTime(*i_guid)) || (obj->GetTypeId() == TYPEID_GAMEOBJECT && !map->GetGORespawnTime(*i_guid))) + if ((obj->GetTypeId() == TYPEID_UNIT && !map->GetCreatureRespawnTime(*i_guid)) || + (obj->GetTypeId() == TYPEID_GAMEOBJECT && !map->GetGORespawnTime(*i_guid)) || + (obj->GetTypeId() == TYPEID_AREATRIGGER)) { ObjectGuid::LowType guid = *i_guid; //TC_LOG_INFO("misc", "DEBUG: LoadHelper from table: %s for (guid: %u) Loading", table, guid); @@ -175,7 +178,7 @@ void LoadHelper(CellGuidSet const& guid_set, CellCoord &cell, GridRefManager<T> } } -void ObjectGridLoader::Visit(GameObjectMapType &m) +void ObjectGridLoader::Visit(GameObjectMapType& m) { CellCoord cellCoord = i_cell.GetCellCoord(); CellObjectGuids const& cell_guids = sObjectMgr->GetCellObjectGuids(i_map->GetId(), i_map->GetDifficultyID(), cellCoord.GetId()); @@ -189,6 +192,15 @@ void ObjectGridLoader::Visit(CreatureMapType &m) LoadHelper(cell_guids.creatures, cellCoord, m, i_creatures, i_map); } +void ObjectGridLoader::Visit(AreaTriggerMapType &m) +{ + CellCoord cellCoord = i_cell.GetCellCoord(); + CellGuidSet const* areaTriggers = sAreaTriggerDataStore->GetAreaTriggersForMapAndCell(i_map->GetId(), cellCoord.GetId()); + if (!areaTriggers) + return; + LoadHelper(*areaTriggers, cellCoord, m, i_areaTriggers, i_map); +} + void ObjectWorldLoader::Visit(CorpseMapType& /*m*/) { CellCoord cellCoord = i_cell.GetCellCoord(); |