diff options
| author | Wyreth <32145860+Wyreth@users.noreply.github.com> | 2018-02-17 15:09:54 +0100 |
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2018-02-17 15:09:54 +0100 |
| commit | 56874b44f0625f80442ea906f487e3253bdd16eb (patch) | |
| tree | f14a406a147d95066ab9513ed50e87c99e338d3e /src/server/game/Entities/Object | |
| parent | d3d0640a8d61e9a216876b7f1b114673893b2bc8 (diff) | |
Core/Entities: remove grid-wide visibility from setActive and implement another method for it (#20725)
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.h | 3 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index bd41de9e657..7e2f0699542 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1027,7 +1027,7 @@ void MovementInfo::OutDebug() } WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), LastUsedScriptID(0), -m_name(""), m_isActive(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr), +m_name(""), m_isActive(false), m_isFarVisible(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr), m_transport(nullptr), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_notifyflags(0) { @@ -1087,6 +1087,14 @@ void WorldObject::setActive(bool on) } } +void WorldObject::SetFarVisible(bool on) +{ + if (GetTypeId() == TYPEID_PLAYER) + return; + + m_isFarVisible = on; +} + void WorldObject::CleanupsBeforeDelete(bool /*finalCleanup*/) { if (IsInWorld()) @@ -1543,7 +1551,7 @@ float WorldObject::GetGridActivationRange() const float WorldObject::GetVisibilityRange() const { - if (isActiveObject() && !ToPlayer()) + if (IsFarVisible() && !ToPlayer()) return MAX_VISIBILITY_DISTANCE; else return GetMap()->GetVisibilityRange(); @@ -1555,7 +1563,7 @@ float WorldObject::GetSightRange(WorldObject const* target) const { if (ToPlayer()) { - if (target && target->isActiveObject() && !target->ToPlayer()) + if (target && target->IsFarVisible() && !target->ToPlayer()) return MAX_VISIBILITY_DISTANCE; else if (ToPlayer()->GetCinematicMgr()->IsOnCinematic()) return DEFAULT_VISIBILITY_INSTANCE; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index a3311615c4f..7e44294254f 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -422,6 +422,8 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation bool isActiveObject() const { return m_isActive; } void setActive(bool isActiveObject); + bool IsFarVisible() const { return m_isFarVisible; } + void SetFarVisible(bool on); void SetWorldObject(bool apply); bool IsPermanentWorldObject() const { return m_isWorldObject; } bool IsWorldObject() const; @@ -456,6 +458,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation protected: std::string m_name; bool m_isActive; + bool m_isFarVisible; const bool m_isWorldObject; ZoneScript* m_zoneScript; |
