diff options
author | Shauren <shauren.trinity@gmail.com> | 2017-02-08 20:23:37 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-06-15 18:41:09 +0200 |
commit | 48cc6f384d2b3ca8f1b1ddcfad70678730573449 (patch) | |
tree | e433f9f0a2f124ae40db71f9bc55b056b19de09a /src | |
parent | 248fd9691bc0f9302455d14c06b6554ff7d3d888 (diff) |
Core/Maps: Adjusted WorldObject::GetGridActivationRange() to never be less than map visibility distance for active objects to ensure equal ranges for activation/deactivation of grids
Updates #19072
(cherrypicked from 74bb92a5822d5a52aecc9cf117309ec1e21abd92)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 9 |
2 files changed, 11 insertions, 21 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 1b65a041fdc..ba90ce832bf 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1329,23 +1329,18 @@ void WorldObject::UpdateAllowedPositionZ(float x, float y, float &z) const float WorldObject::GetGridActivationRange() const { - if (ToPlayer()) + if (isActiveObject()) { - if (ToPlayer()->GetCinematicMgr()->IsOnCinematic()) - return DEFAULT_VISIBILITY_INSTANCE; + if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->GetCinematicMgr->IsOnCinematic()) + return std::max(DEFAULT_VISIBILITY_INSTANCE, GetMap()->GetVisibilityRange()); + return GetMap()->GetVisibilityRange(); } - else if (ToCreature()) - return ToCreature()->m_SightDistance; - else if (ToDynObject()) - { - if (isActiveObject()) - return GetMap()->GetVisibilityRange(); - else - return 0.0f; - } - else - return 0.0f; + + if (Creature const* thisCreature = ToCreature()) + return thisCreature->m_SightDistance; + + return 0.0f; } float WorldObject::GetVisibilityRange() const diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 8d3e87e3c48..4004d7c03ed 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -789,14 +789,9 @@ void Map::Update(const uint32 t_diff) VisitNearbyCellsOf(player, grid_object_update, world_object_update); - // If player is using far sight, visit that object too + // If player is using far sight or mind vision, visit that object too if (WorldObject* viewPoint = player->GetViewpoint()) - { - if (Creature* viewCreature = viewPoint->ToCreature()) - VisitNearbyCellsOf(viewCreature, grid_object_update, world_object_update); - else if (DynamicObject* viewObject = viewPoint->ToDynObject()) - VisitNearbyCellsOf(viewObject, grid_object_update, world_object_update); - } + VisitNearbyCellsOf(viewPoint, grid_object_update, world_object_update); // Handle updates for creatures in combat with player and are more than 60 yards away if (player->IsInCombat()) |