aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Object.cpp7
-rw-r--r--src/game/Object.h11
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