diff options
-rw-r--r-- | src/server/game/Movement/PathGenerator.cpp | 21 | ||||
-rw-r--r-- | src/server/game/Movement/PathGenerator.h | 2 |
2 files changed, 9 insertions, 14 deletions
diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index aae9b7ea1c7..a5967cf5867 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -697,25 +697,20 @@ void PathGenerator::UpdateFilter() } } -NavTerrainFlag PathGenerator::GetNavTerrain(float x, float y, float z) +NavTerrainFlag PathGenerator::GetNavTerrain(float x, float y, float z) const { LiquidData data; ZLiquidStatus liquidStatus = _source->GetMap()->GetLiquidStatus(_source->GetPhaseShift(), x, y, z, map_liquidHeaderTypeFlags::AllLiquids, &data, _source->GetCollisionHeight()); if (liquidStatus == LIQUID_MAP_NO_WATER) return NAV_GROUND; - data.type_flags &= map_liquidHeaderTypeFlags::DarkWater; - switch (data.type_flags) - { - case map_liquidHeaderTypeFlags::Water: - case map_liquidHeaderTypeFlags::Ocean: - return NAV_WATER; - case map_liquidHeaderTypeFlags::Magma: - case map_liquidHeaderTypeFlags::Slime: - return NAV_MAGMA_SLIME; - default: - return NAV_GROUND; - } + if (data.type_flags.HasFlag(map_liquidHeaderTypeFlags::Water | map_liquidHeaderTypeFlags::Ocean)) + return NAV_WATER; + + if (data.type_flags.HasFlag(map_liquidHeaderTypeFlags::Magma | map_liquidHeaderTypeFlags::Slime)) + return NAV_MAGMA_SLIME; + + return NAV_GROUND; } bool PathGenerator::HaveTile(const G3D::Vector3& p) const diff --git a/src/server/game/Movement/PathGenerator.h b/src/server/game/Movement/PathGenerator.h index b06573e7253..3d86cd066b8 100644 --- a/src/server/game/Movement/PathGenerator.h +++ b/src/server/game/Movement/PathGenerator.h @@ -132,7 +132,7 @@ class TC_GAME_API PathGenerator void BuildPointPath(float const* startPoint, float const* endPoint); void BuildShortcut(); - NavTerrainFlag GetNavTerrain(float x, float y, float z); + NavTerrainFlag GetNavTerrain(float x, float y, float z) const; void CreateFilter(); void UpdateFilter(); |