aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-10-30 11:53:26 +0100
committerShauren <shauren.trinity@gmail.com>2016-10-30 11:53:26 +0100
commitb88cecb656c62cd3bcc3ae2a171b173eb64a28c9 (patch)
tree48232f56e3810f6d58c3963cb11e1dea4fcf26a7
parent3e789bd476ff9f10224c47b12c7e1af1483df189 (diff)
Core/Transports: Added extra transport position update just when it stops moving
Closes #17952
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index fad197949a8..4d39332ea36 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -131,6 +131,7 @@ void Transport::Update(uint32 diff)
m_goValue.Transport.PathProgress += diff;
uint32 timer = m_goValue.Transport.PathProgress % GetTransportPeriod();
+ bool justStopped = false;
// Set current waypoint
// Desired outcome: _currentFrame->DepartureTime < timer < _nextFrame->ArriveTime
@@ -149,6 +150,7 @@ void Transport::Update(uint32 diff)
if (timer < _currentFrame->DepartureTime)
{
SetMoving(false);
+ justStopped = true;
if (_pendingStop && GetGoState() != GO_STATE_READY)
{
SetGoState(GO_STATE_READY);
@@ -201,7 +203,7 @@ void Transport::Update(uint32 diff)
if (_positionChangeTimer.Passed())
{
_positionChangeTimer.Reset(positionUpdateDelay);
- if (IsMoving())
+ if (IsMoving() || justStopped)
{
float t = CalculateSegmentPos(float(timer) * 0.001f);
G3D::Vector3 pos, dir;