From c3242caf74d0fd3896e5c8bfeda2b07d9020a051 Mon Sep 17 00:00:00 2001 From: Patrick Lewis Date: Fri, 14 May 2021 01:10:35 -0700 Subject: [PATCH] fix(Core/Maps): GetCollisionHeight and Z_OFFSET_FIND_HEIGHT (#5778) --- src/server/game/Entities/Object/Object.cpp | 6 +++--- src/server/shared/SharedDefines.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 3adfa1e8f..44d5db6ad 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -3019,7 +3019,7 @@ ObjectGuid WorldObject::GetTransGUID() const float WorldObject::GetMapHeight(float x, float y, float z, bool vmap/* = true*/, float distanceToSearch/* = DEFAULT_HEIGHT_SEARCH*/) const { if (z != MAX_HEIGHT) - z += Z_OFFSET_FIND_HEIGHT; + z += std::max(GetCollisionHeight(), Z_OFFSET_FIND_HEIGHT); return GetMap()->GetHeight(GetPhaseMask(), x, y, z, vmap, distanceToSearch); } @@ -3028,7 +3028,7 @@ float WorldObject::GetMapWaterOrGroundLevel(float x, float y, float z, float* gr { return GetMap()->GetWaterOrGroundLevel(GetPhaseMask(), x, y, z, ground, isType(TYPEMASK_UNIT) ? !static_cast(this)->HasAuraType(SPELL_AURA_WATER_WALK) : false, - GetCollisionHeight()); + std::max(GetCollisionHeight(), Z_OFFSET_FIND_HEIGHT)); } float WorldObject::GetFloorZ() const @@ -3036,5 +3036,5 @@ float WorldObject::GetFloorZ() const if (!IsInWorld()) return m_staticFloorZ; - return std::max(m_staticFloorZ, GetMap()->GetGameObjectFloor(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ() + Z_OFFSET_FIND_HEIGHT)); + return std::max(m_staticFloorZ, GetMap()->GetGameObjectFloor(GetPhaseMask(), GetPositionX(), GetPositionY(), GetPositionZ() + std::max(GetCollisionHeight(), Z_OFFSET_FIND_HEIGHT))); } diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h index 7e17011d9..76f7d40d7 100644 --- a/src/server/shared/SharedDefines.h +++ b/src/server/shared/SharedDefines.h @@ -12,7 +12,7 @@ #include float const GROUND_HEIGHT_TOLERANCE = 0.05f; // Extra tolerance to z position to check if it is in air or on ground. -constexpr float Z_OFFSET_FIND_HEIGHT = 0.5f; +constexpr float Z_OFFSET_FIND_HEIGHT = 2.0f; enum SpellEffIndex {