From d68d99d182b65fb8a42177aefb994f455506d428 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 30 Oct 2016 14:00:23 +0100 Subject: Core/Transports: Fixed crash added in b88cecb656c62cd3bcc3ae2a171b173eb64a28c9 --- src/server/game/Entities/Transport/Transport.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/server') 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: -- cgit v1.2.3