diff options
author | ccrs <ccrs@users.noreply.github.com> | 2017-11-20 19:47:23 +0100 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2021-02-15 19:13:25 +0100 |
commit | 88c3a184cc9cfd7457f5c4e5f743161c763cddf7 (patch) | |
tree | bbf8e8c26fcb1f44a89db40c92727a5ff65c2927 /src | |
parent | a36ddf47a9eeedc680dbea6252dec38fc4746529 (diff) |
Core/Movement: some corrections on WaypointMovementGenerator
- Since a timer can be set on MovementGenerator::Pause, dont update it till the movespline is Finalized
- Don't set HomePosition on every Update, check if movespline is Finalized
* This is still doesnt feel correct, should it only be called on WaypointNode Start?
(cherry picked from commit 2ce9a0a094a3d86a86a9323693c93ed6a2bbcaaf)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index e0f310fdbff..e93e5e5be5f 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -256,16 +256,15 @@ bool WaypointMovementGenerator<Creature>::DoUpdate(Creature* creature, uint32 di if (!_nextMoveTime.Passed()) { - _nextMoveTime.Update(diff); - if (_nextMoveTime.Passed()) - return StartMoveNow(creature); + if (creature->movespline->Finalized()) + { + _nextMoveTime.Update(diff); + if (_nextMoveTime.Passed()) + return StartMoveNow(creature); + } } else { - // Set home position at place on waypoint movement. - if (creature->GetTransGUID().IsEmpty()) - creature->SetHomePosition(creature->GetPosition()); - if (creature->movespline->Finalized()) { OnArrived(creature); @@ -274,14 +273,21 @@ bool WaypointMovementGenerator<Creature>::DoUpdate(Creature* creature, uint32 di if (_nextMoveTime.Passed()) return StartMove(creature); } - else if (_recalculateSpeed) + else { - if (_nextMoveTime.Passed()) - StartMove(creature); + // Set home position at place on waypoint movement. + if (creature->GetTransGUID().IsEmpty()) + creature->SetHomePosition(creature->GetPosition()); + + if (_recalculateSpeed) + { + if (_nextMoveTime.Passed()) + StartMove(creature); + } } } return true; - } +} void WaypointMovementGenerator<Creature>::MovementInform(Creature* creature) { |