aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Grids/ObjectGridLoader.cpp9
-rw-r--r--src/server/game/Maps/Map.cpp17
-rw-r--r--src/server/game/Maps/Map.h6
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())