diff options
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 42 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.h | 8 |
2 files changed, 25 insertions, 25 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 9765ef91434..155596e7e32 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -76,21 +76,6 @@ Object::Object() : m_scriptRef(this, NoopObjectDeleter()) m_objectUpdated = false; } -WorldObject::~WorldObject() -{ - // this may happen because there are many !create/delete - if (IsWorldObject() && m_currMap) - { - if (GetTypeId() == TYPEID_CORPSE) - { - TC_LOG_FATAL("misc", "WorldObject::~WorldObject Corpse Type: {} ({}) deleted but still in map!!", - ToCorpse()->GetType(), GetGUID().ToString()); - ABORT(); - } - ResetMap(); - } -} - Object::~Object() { if (IsInWorld()) @@ -973,7 +958,7 @@ void MovementInfo::OutDebug() } WorldObject::WorldObject(bool isWorldObject) : Object(), WorldLocation(), LastUsedScriptID(0), -m_movementInfo(), m_name(), m_isActive(false), m_isFarVisible(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr), +m_movementInfo(), m_name(), m_isActive(false), m_isFarVisible(false), m_isStoredInWorldObjectGridContainer(isWorldObject), m_zoneScript(nullptr), m_transport(nullptr), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_outdoors(false), m_liquidStatus(LIQUID_MAP_NO_WATER), m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_notifyflags(0) { @@ -981,7 +966,22 @@ m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_notifyflag m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); } -void WorldObject::SetWorldObject(bool on) +WorldObject::~WorldObject() +{ + // this may happen because there are many !create/delete + if (IsStoredInWorldObjectGridContainer() && m_currMap) + { + if (GetTypeId() == TYPEID_CORPSE) + { + TC_LOG_FATAL("misc", "WorldObject::~WorldObject Corpse Type: {} ({}) deleted but still in map!!", + ToCorpse()->GetType(), GetGUID().ToString()); + ABORT(); + } + ResetMap(); + } +} + +void WorldObject::SetIsStoredInWorldObjectGridContainer(bool on) { if (!IsInWorld()) return; @@ -989,9 +989,9 @@ void WorldObject::SetWorldObject(bool on) GetMap()->AddObjectToSwitchList(this, on); } -bool WorldObject::IsWorldObject() const +bool WorldObject::IsStoredInWorldObjectGridContainer() const { - if (m_isWorldObject) + if (m_isStoredInWorldObjectGridContainer) return true; if (ToCreature() && ToCreature()->m_isTempWorldObject) @@ -1826,7 +1826,7 @@ void WorldObject::SetMap(Map* map) m_currMap = map; m_mapId = map->GetId(); m_InstanceId = map->GetInstanceId(); - if (IsWorldObject()) + if (IsStoredInWorldObjectGridContainer()) m_currMap->AddWorldObject(this); } @@ -1834,7 +1834,7 @@ void WorldObject::ResetMap() { ASSERT(m_currMap); ASSERT(!IsInWorld()); - if (IsWorldObject()) + if (IsStoredInWorldObjectGridContainer()) m_currMap->RemoveWorldObject(this); m_currMap = nullptr; //maybe not for corpse diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index abf3bd3bf98..c0a1a2b2656 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -497,9 +497,9 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void SetFarVisible(bool on); bool IsVisibilityOverridden() const { return m_visibilityDistanceOverride.has_value(); } void SetVisibilityDistanceOverride(VisibilityDistanceType type); - void SetWorldObject(bool apply); - bool IsPermanentWorldObject() const { return m_isWorldObject; } - bool IsWorldObject() const; + void SetIsStoredInWorldObjectGridContainer(bool apply); + bool IsAlwaysStoredInWorldObjectGridContainer() const { return m_isStoredInWorldObjectGridContainer; } + bool IsStoredInWorldObjectGridContainer() const; uint32 LastUsedScriptID; @@ -538,7 +538,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation bool m_isActive; bool m_isFarVisible; Optional<float> m_visibilityDistanceOverride; - bool const m_isWorldObject; + bool const m_isStoredInWorldObjectGridContainer; ZoneScript* m_zoneScript; // transports |
