From 59c8f7276eb7a578789360c5cfc8087c9f549969 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 24 Jul 2021 16:26:18 +0200 Subject: [PATCH] fix(Core/Movement): correct weird pathing by clearing old path (#7034) - Closes #5220. --- .../game/Movement/MovementGenerators/PathGenerator.h | 12 ++++++------ .../MovementGenerators/TargetedMovementGenerator.cpp | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/server/game/Movement/MovementGenerators/PathGenerator.h b/src/server/game/Movement/MovementGenerators/PathGenerator.h index 9f8a3744d..40abfa357 100644 --- a/src/server/game/Movement/MovementGenerators/PathGenerator.h +++ b/src/server/game/Movement/MovementGenerators/PathGenerator.h @@ -111,6 +111,12 @@ class PathGenerator return len; } + void Clear() + { + _polyLength = 0; + _pathPoints.clear(); + } + private: dtPolyRef _pathPolyRefs[MAX_PATH_LENGTH]; // array of detour polygon references uint32 _polyLength; // number of polygons in the path @@ -139,12 +145,6 @@ class PathGenerator void SetActualEndPosition(G3D::Vector3 const& point) { _actualEndPosition = point; } void NormalizePath(); - void Clear() - { - _polyLength = 0; - _pathPoints.clear(); - } - bool InRange(G3D::Vector3 const& p1, G3D::Vector3 const& p2, float r, float h) const; float Dist3DSqr(G3D::Vector3 const& p1, G3D::Vector3 const& p2) const; bool InRangeYZX(float const* v1, float const* v2, float r, float h) const; diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 3e91334f0..d74acbc4b 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -131,6 +131,8 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) if (!i_path || moveToward != _movingTowards) i_path = std::make_unique(owner); + else + i_path->Clear(); float x, y, z; bool shortenPath;