diff options
-rw-r--r-- | src/server/game/Grids/ObjectGridLoader.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 17 | ||||
-rw-r--r-- | src/server/game/Maps/Map.h | 6 |
3 files changed, 23 insertions, 9 deletions
diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp index b2ddd6b8a4a..d124cd57276 100644 --- a/src/server/game/Grids/ObjectGridLoader.cpp +++ b/src/server/game/Grids/ObjectGridLoader.cpp @@ -99,6 +99,15 @@ void AddObjectHelper(CellCoord &cell, GridRefManager<T> &m, uint32 &count, Map* obj->AddToGrid(m); ObjectGridLoader::SetObjectCell(obj, cell); obj->AddToWorld(); + ++count; +} + +template <> +void AddObjectHelper(CellCoord &cell, CreatureMapType &m, uint32 &count, Map* map, Creature *obj) +{ + obj->AddToGrid(m); + ObjectGridLoader::SetObjectCell(obj, cell); + obj->AddToWorld(); if (obj->isActiveObject()) map->AddToActive(obj); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 46eee6613fe..2f4194b3f5f 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2541,10 +2541,15 @@ void Map::AddToActive(Creature* c) } } +template<> +void Map::AddToActive(DynamicObject* d) +{ + AddToActiveHelper(d); +} + template<class T> void Map::RemoveFromActive(T* obj) { - RemoveFromActiveHelper(obj); } template <> @@ -2569,6 +2574,12 @@ void Map::RemoveFromActive(Creature* c) } } +template<> +void Map::RemoveFromActive(DynamicObject* obj) +{ + RemoveFromActiveHelper(obj); +} + template bool Map::AddToMap(Corpse*); template bool Map::AddToMap(Creature*); template bool Map::AddToMap(GameObject*); @@ -2579,10 +2590,6 @@ template void Map::RemoveFromMap(Creature*, bool); template void Map::RemoveFromMap(GameObject*, bool); template void Map::RemoveFromMap(DynamicObject*, bool); -template void Map::AddToActive(DynamicObject*); - -template void Map::RemoveFromActive(DynamicObject*); - /* ******* Dungeon Instance Maps ******* */ InstanceMap::InstanceMap(uint32 id, time_t expiry, uint32 InstanceId, uint8 SpawnMode, Map* _parent) diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index c57f7d36bc6..932f3e213ae 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -603,14 +603,12 @@ class Map : public GridRefManager<NGridType> template<class T> void DeleteFromWorld(T*); - template<class T> - void AddToActiveHelper(T* obj) + void AddToActiveHelper(WorldObject* obj) { m_activeNonPlayers.insert(obj); } - template<class T> - void RemoveFromActiveHelper(T* obj) + void RemoveFromActiveHelper(WorldObject* obj) { // Map::Update for active object in proccess if (m_activeNonPlayersIter != m_activeNonPlayers.end()) |