public override void DoServerDestroy() { if (FrontTrackSection != null) { FrontTrackSection.DeregisterTrackUser(this); } base.DoServerDestroy(); }
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); }