diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Object.cpp | 7 | ||||
-rw-r--r-- | src/game/Object.h | 11 |
2 files changed, 10 insertions, 8 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp index d106b578004..7ca7a58f90c 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1059,6 +1059,7 @@ WorldObject::WorldObject() m_mapId = 0; m_InstanceId = 0; + m_map = NULL; m_name = ""; @@ -1555,12 +1556,14 @@ void WorldObject::SendObjectDeSpawnAnim(uint64 guid) Map* WorldObject::GetMap() const { - return MapManager::Instance().GetMap(GetMapId(), this); + if(m_map) return m_map; + else return const_cast<Map*>(m_map) = MapManager::Instance().GetMap(GetMapId(), this); } Map* WorldObject::FindMap() const { - return MapManager::Instance().FindMap(GetMapId(), GetInstanceId()); + if(m_map) return m_map; + else return const_cast<Map*>(m_map) = MapManager::Instance().FindMap(GetMapId(), GetInstanceId()); } Map const* WorldObject::GetBaseMap() const diff --git a/src/game/Object.h b/src/game/Object.h index ecba2a77f65..e19d9be41ce 100644 --- a/src/game/Object.h +++ b/src/game/Object.h @@ -418,8 +418,10 @@ class TRINITY_DLL_SPEC WorldObject : public Object void GetRandomPoint( float x, float y, float z, float distance, float &rand_x, float &rand_y, float &rand_z ) const; - void SetMapId(uint32 newMap) { m_mapId = newMap; } + void SetMapId(uint32 newMap) { m_mapId = newMap; m_map = NULL; } uint32 GetMapId() const { return m_mapId; } + void SetInstanceId(uint32 val) { m_InstanceId = val; m_map = NULL; } + uint32 GetInstanceId() const { return m_InstanceId; } uint32 GetZoneId() const; uint32 GetAreaId() const; @@ -467,9 +469,6 @@ class TRINITY_DLL_SPEC WorldObject : public Object virtual void SaveRespawnTime() {} - uint32 GetInstanceId() const { return m_InstanceId; } - void SetInstanceId(uint32 val) { m_InstanceId = val; } - void AddObjectToRemoveList(); // main visibility check function in normal case (ignore grey zone distance check) @@ -502,6 +501,8 @@ class TRINITY_DLL_SPEC WorldObject : public Object private: uint32 m_mapId; + uint32 m_InstanceId; + Map *m_map; float m_positionX; float m_positionY; @@ -509,8 +510,6 @@ class TRINITY_DLL_SPEC WorldObject : public Object float m_orientation; bool mSemaphoreTeleport; - - uint32 m_InstanceId; }; #endif |