diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-10-30 14:00:23 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-10-30 14:00:23 +0100 |
| commit | d68d99d182b65fb8a42177aefb994f455506d428 (patch) | |
| tree | 92faebc6e8fd8142f441aaee33c8bb84de464ec4 /src | |
| parent | e1552d56b5c210914bc67ba8a8a899e9adb4c34d (diff) | |
Core/Transports: Fixed crash added in b88cecb656c62cd3bcc3ae2a171b173eb64a28c9
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 4d39332ea36..cdb4b931a07 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -203,14 +203,16 @@ void Transport::Update(uint32 diff) if (_positionChangeTimer.Passed()) { _positionChangeTimer.Reset(positionUpdateDelay); - if (IsMoving() || justStopped) + if (IsMoving()) { - float t = CalculateSegmentPos(float(timer) * 0.001f); + float t = !justStopped ? CalculateSegmentPos(float(timer) * 0.001f) : 1.0f; G3D::Vector3 pos, dir; _currentFrame->Spline->evaluate_percent(_currentFrame->Index, t, pos); _currentFrame->Spline->evaluate_derivative(_currentFrame->Index, t, dir); UpdatePosition(pos.x, pos.y, pos.z, std::atan2(dir.y, dir.x) + float(M_PI)); } + else if (justStopped) + UpdatePosition(_currentFrame->Node->LocX, _currentFrame->Node->LocY, _currentFrame->Node->LocZ, _currentFrame->InitialOrientation); else { /* There are four possible scenarios that trigger loading/unloading passengers: |
