Added extra transport position update just when it stops moving
This commit is contained in:
@@ -164,6 +164,7 @@ namespace Game.Entities
|
|||||||
m_goValue.Transport.PathProgress += diff;
|
m_goValue.Transport.PathProgress += diff;
|
||||||
|
|
||||||
uint timer = m_goValue.Transport.PathProgress % GetTransportPeriod();
|
uint timer = m_goValue.Transport.PathProgress % GetTransportPeriod();
|
||||||
|
bool justStopped = false;
|
||||||
|
|
||||||
// Set current waypoint
|
// Set current waypoint
|
||||||
// Desired outcome: _currentFrame.DepartureTime < timer < _nextFrame.ArriveTime
|
// Desired outcome: _currentFrame.DepartureTime < timer < _nextFrame.ArriveTime
|
||||||
@@ -182,6 +183,7 @@ namespace Game.Entities
|
|||||||
if (timer < _currentFrame.DepartureTime)
|
if (timer < _currentFrame.DepartureTime)
|
||||||
{
|
{
|
||||||
SetMoving(false);
|
SetMoving(false);
|
||||||
|
justStopped = true;
|
||||||
if (_pendingStop && GetGoState() != GameObjectState.Ready)
|
if (_pendingStop && GetGoState() != GameObjectState.Ready)
|
||||||
{
|
{
|
||||||
SetGoState(GameObjectState.Ready);
|
SetGoState(GameObjectState.Ready);
|
||||||
@@ -238,12 +240,14 @@ namespace Game.Entities
|
|||||||
_positionChangeTimer.Reset(positionUpdateDelay);
|
_positionChangeTimer.Reset(positionUpdateDelay);
|
||||||
if (IsMoving())
|
if (IsMoving())
|
||||||
{
|
{
|
||||||
float t = CalculateSegmentPos(timer * 0.001f);
|
float t = !justStopped ? CalculateSegmentPos(timer * 0.001f) : 1.0f;
|
||||||
Vector3 pos, dir;
|
Vector3 pos, dir;
|
||||||
_currentFrame.Spline.Evaluate_Percent((int)_currentFrame.Index, t, out pos);
|
_currentFrame.Spline.Evaluate_Percent((int)_currentFrame.Index, t, out pos);
|
||||||
_currentFrame.Spline.Evaluate_Derivative((int)_currentFrame.Index, t, out dir);
|
_currentFrame.Spline.Evaluate_Derivative((int)_currentFrame.Index, t, out dir);
|
||||||
UpdatePosition(pos.X, pos.Y, pos.Z, (float)Math.Atan2(dir.Y, dir.X) + MathFunctions.PI);
|
UpdatePosition(pos.X, pos.Y, pos.Z, (float)Math.Atan2(dir.Y, dir.X) + MathFunctions.PI);
|
||||||
}
|
}
|
||||||
|
else if (justStopped)
|
||||||
|
UpdatePosition(_currentFrame.Node.Loc.X, _currentFrame.Node.Loc.Y, _currentFrame.Node.Loc.Z, _currentFrame.InitialOrientation);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* There are four possible scenarios that trigger loading/unloading passengers:
|
/* There are four possible scenarios that trigger loading/unloading passengers:
|
||||||
|
|||||||
Reference in New Issue
Block a user