diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-10-30 11:53:26 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-10-30 11:53:26 +0100 |
| commit | b88cecb656c62cd3bcc3ae2a171b173eb64a28c9 (patch) | |
| tree | 48232f56e3810f6d58c3963cb11e1dea4fcf26a7 | |
| parent | 3e789bd476ff9f10224c47b12c7e1af1483df189 (diff) | |
Core/Transports: Added extra transport position update just when it stops moving
Closes #17952
| -rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 4 |
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; |
