aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2017-11-20 19:47:23 +0100
committerfunjoker <funjoker109@gmail.com>2021-02-15 19:13:25 +0100
commit88c3a184cc9cfd7457f5c4e5f743161c763cddf7 (patch)
treebbf8e8c26fcb1f44a89db40c92727a5ff65c2927 /src
parenta36ddf47a9eeedc680dbea6252dec38fc4746529 (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.cpp28
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)
{