Example #1
0
 public override void DoServerDestroy()
 {
     if (FrontTrackSection != null)
     {
         FrontTrackSection.DeregisterTrackUser(this);
     }
     base.DoServerDestroy();
 }
Example #2
0
    public float FixedUpdateTrainOnTrack(float deltaTime)
    {
        float engineForces = GetEngineForces();

        TrackSpeed += engineForces / rigidBody.mass * deltaTime;
        if (TrackSpeed > 0f)
        {
            TrackSpeed -= rigidBody.drag * 5f * deltaTime;
            if (TrackSpeed < 0f)
            {
                TrackSpeed = 0f;
            }
        }
        else if (TrackSpeed < 0f)
        {
            TrackSpeed += rigidBody.drag * 5f * deltaTime;
            if (TrackSpeed > 0f)
            {
                TrackSpeed = 0f;
            }
        }
        float num = base.transform.localEulerAngles.x;

        if (num > 180f)
        {
            num -= 360f;
        }
        float num2 = num / 90f * UnityEngine.Physics.gravity.y;

        TrackSpeed += num2 * deltaTime;
        TrackSpeed  = ApplyCollisionsToTrackSpeed(TrackSpeed, deltaTime);
        float            distMoved         = TrackSpeed * deltaTime;
        TrainTrackSpline preferredAltTrack = ((RearTrackSection != FrontTrackSection) ? RearTrackSection : null);
        TrainTrackSpline onSpline;
        bool             atEndOfLine;

        FrontWheelSplineDist = FrontTrackSection.GetSplineDistAfterMove(FrontWheelSplineDist, base.transform.forward, distMoved, curTrackSelection, out onSpline, out atEndOfLine, preferredAltTrack);
        Vector3 position = onSpline.GetPosition(FrontWheelSplineDist);

        SetTheRestFromFrontWheelData(ref onSpline, position);
        FrontTrackSection = onSpline;
        return(TrackSpeed);
    }