aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2017-11-20 19:47:23 +0100
committerccrs <ccrs@users.noreply.github.com>2017-11-20 19:47:23 +0100
commit2ce9a0a094a3d86a86a9323693c93ed6a2bbcaaf (patch)
treec06b6ffa1c59ae7476b9a1882a7376b02d3589fe /src
parent4d338b1d4d6ddf449e52c38f6cb9cdeb9cbf32fe (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?
Diffstat (limited to 'src')
-rwxr-xr-xsrc/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 3fba420059e..74a8588163c 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -252,16 +252,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->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) || creature->GetTransGUID().IsEmpty())
- creature->SetHomePosition(creature->GetPosition());
-
if (creature->movespline->Finalized())
{
OnArrived(creature);
@@ -270,14 +269,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->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) || creature->GetTransGUID().IsEmpty())
+ creature->SetHomePosition(creature->GetPosition());
+
+ if (_recalculateSpeed)
+ {
+ if (_nextMoveTime.Passed())
+ StartMove(creature);
+ }
}
}
return true;
- }
+}
void WaypointMovementGenerator<Creature>::MovementInform(Creature* creature)
{