From dc99a44797c2a3cce989c4808caa726de5230ee7 Mon Sep 17 00:00:00 2001 From: megamage Date: Mon, 20 Apr 2009 17:37:59 -0500 Subject: *Add m_map in worldobject to make getmap faster. --HG-- branch : trunk --- src/game/Object.cpp | 7 +++++-- src/game/Object.h | 11 +++++------ 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'src/game') 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(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(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 -- cgit v1.2.3