aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/Map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r--src/server/game/Maps/Map.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index ac15853286e..76bfb162ec0 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -2710,9 +2710,19 @@ bool Map::ActiveObjectsNearGrid(NGridType const& ngrid) const
return false;
}
+void Map::AddWorldObject(WorldObject* obj)
+{
+ i_worldObjects.insert(obj);
+}
+
+void Map::RemoveWorldObject(WorldObject* obj)
+{
+ i_worldObjects.erase(obj);
+}
+
void Map::AddToActive(WorldObject* obj)
{
- AddToActiveHelper(obj);
+ m_activeNonPlayers.insert(obj);
Optional<Position> respawnLocation;
switch (obj->GetTypeId())
@@ -2751,7 +2761,19 @@ void Map::AddToActive(WorldObject* obj)
void Map::RemoveFromActive(WorldObject* obj)
{
- RemoveFromActiveHelper(obj);
+ // Map::Update for active object in proccess
+ if (m_activeNonPlayersIter != m_activeNonPlayers.end())
+ {
+ ActiveNonPlayers::iterator itr = m_activeNonPlayers.find(obj);
+ if (itr != m_activeNonPlayers.end())
+ {
+ if (itr == m_activeNonPlayersIter)
+ ++m_activeNonPlayersIter;
+ m_activeNonPlayers.erase(itr);
+ }
+ }
+ else
+ m_activeNonPlayers.erase(obj);
Optional<Position> respawnLocation;
switch (obj->GetTypeId())