diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp index 6a69e5288..433493492 100644 --- a/src/game/GameObject.cpp +++ b/src/game/GameObject.cpp @@ -738,7 +738,7 @@ bool GameObject::isVisibleForInState(Player const* u, bool inVisibleList) const } // check distance - return IsWithinDistInMap2d(u,World::GetMaxVisibleDistanceForObject() + + return IsWithinDistInMap(u,World::GetMaxVisibleDistanceForObject() + (inVisibleList ? World::GetVisibleObjectGreyDistance() : 0.0f), false); } diff --git a/src/game/Object.cpp b/src/game/Object.cpp index b02794884..ebd2279b7 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1123,19 +1123,6 @@ bool WorldObject::IsWithinDistInMap(const WorldObject* obj, const float dist2com return distsq < maxdist * maxdist; } -bool WorldObject::IsWithinDistInMap2d(const WorldObject* obj, const float dist2compare) const -{ - if (!obj || !IsInMap(obj)) return false; - - float dx = GetPositionX() - obj->GetPositionX(); - float dy = GetPositionY() - obj->GetPositionY(); - float distsq = dx*dx + dy*dy; - float sizefactor = GetObjectSize() + obj->GetObjectSize(); - float maxdist = dist2compare + sizefactor; - - return distsq < maxdist * maxdist; -} - bool WorldObject::IsWithinLOSInMap(const WorldObject* obj) const { if (!IsInMap(obj)) return false; diff --git a/src/game/Object.h b/src/game/Object.h index 8be15b4f7..16e1fbfdf 100644 --- a/src/game/Object.h +++ b/src/game/Object.h @@ -418,7 +418,6 @@ class MANGOS_DLL_SPEC WorldObject : public Object float GetDistanceZ(const WorldObject* obj) const; bool IsInMap(const WorldObject* obj) const { return GetMapId()==obj->GetMapId() && GetInstanceId()==obj->GetInstanceId(); } bool IsWithinDistInMap(const WorldObject* obj, const float dist2compare, const bool is3D = true) const; - bool IsWithinDistInMap2d(const WorldObject* obj, const float dist2compare) const; bool IsWithinLOS(const float x, const float y, const float z ) const; bool IsWithinLOSInMap(const WorldObject* obj) const; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 2e4116f47..1fe3e984d 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -8599,26 +8599,12 @@ bool Unit::isVisibleForOrDetect(Unit const* u, bool detect, bool inVisibleList, { // use object grey distance for all (only see objects any way) if (!IsWithinDistInMap(u,World::GetMaxVisibleDistanceInFlight()+(inVisibleList ? World::GetVisibleObjectGreyDistance() : 0.0f), is3dDistance)) - { - if (!IsWithinDistInMap2d(u,World::GetMaxVisibleDistanceInFlight()+(inVisibleList ? World::GetVisibleObjectGreyDistance() : 0.0f))) - return false; - } - else - { - return false; - } + return false; } else if(!isAlive()) // distance for show body { if (!IsWithinDistInMap(u,World::GetMaxVisibleDistanceForObject()+(inVisibleList ? World::GetVisibleObjectGreyDistance() : 0.0f), is3dDistance)) - { - if (!IsWithinDistInMap2d(u,World::GetMaxVisibleDistanceForObject()+(inVisibleList ? World::GetVisibleObjectGreyDistance() : 0.0f))) - return false; - } - else - { - return false; - } + return false; } else if(GetTypeId()==TYPEID_PLAYER) // distance for show player { @@ -8626,54 +8612,26 @@ bool Unit::isVisibleForOrDetect(Unit const* u, bool detect, bool inVisibleList, { // Players far than max visible distance for player or not in our map are not visible too if (!at_same_transport && !IsWithinDistInMap(u,World::GetMaxVisibleDistanceForPlayer()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f), is3dDistance)) - { - if (!at_same_transport && !IsWithinDistInMap2d(u,World::GetMaxVisibleDistanceForPlayer()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f))) - return false; - } - else - { - return false; - } + return false; } else { // Units far than max visible distance for creature or not in our map are not visible too if (!IsWithinDistInMap(u,World::GetMaxVisibleDistanceForCreature()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f), is3dDistance)) - { - if (!IsWithinDistInMap2d(u,World::GetMaxVisibleDistanceForCreature()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f))) - return false; - } - else - { - return false; - } + return false; } } else if(GetCharmerOrOwnerGUID()) // distance for show pet/charmed { // Pet/charmed far than max visible distance for player or not in our map are not visible too if (!IsWithinDistInMap(u,World::GetMaxVisibleDistanceForPlayer()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f), is3dDistance)) - { - if (!IsWithinDistInMap2d(u,World::GetMaxVisibleDistanceForPlayer()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f))) - return false; - } - else - { - return false; - } + return false; } else // distance for show creature { // Units far than max visible distance for creature or not in our map are not visible too if (!IsWithinDistInMap(u,World::GetMaxVisibleDistanceForCreature()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f), is3dDistance)) - { - if (!IsWithinDistInMap2d(u,World::GetMaxVisibleDistanceForCreature()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f))) - return false; - } - else - { - return false; - } + return false; } // Visible units, always are visible for all units, except for units under invisibility