aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-02-08 20:23:37 +0100
committerShauren <shauren.trinity@gmail.com>2019-06-15 18:41:09 +0200
commit48cc6f384d2b3ca8f1b1ddcfad70678730573449 (patch)
treee433f9f0a2f124ae40db71f9bc55b056b19de09a /src
parent248fd9691bc0f9302455d14c06b6554ff7d3d888 (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.cpp23
-rw-r--r--src/server/game/Maps/Map.cpp9
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())