OpenBve.TrainManager.GetAccelerationOutput C# (CSharp) Method

GetAccelerationOutput() static private method

static private GetAccelerationOutput ( Train Train, int CarIndex, int CurveIndex, double Speed ) : double
Train Train
CarIndex int
CurveIndex int
Speed double
return double
		internal static double GetAccelerationOutput(Train Train, int CarIndex, int CurveIndex, double Speed)
		{
			if (CurveIndex < Train.Cars[CarIndex].Specs.AccelerationCurves.Length)
			{
				double a0 = Train.Cars[CarIndex].Specs.AccelerationCurves[CurveIndex].StageZeroAcceleration;
				double s1 = Train.Cars[CarIndex].Specs.AccelerationCurves[CurveIndex].StageOneSpeed;
				double a1 = Train.Cars[CarIndex].Specs.AccelerationCurves[CurveIndex].StageOneAcceleration;
				double s2 = Train.Cars[CarIndex].Specs.AccelerationCurves[CurveIndex].StageTwoSpeed;
				double e2 = Train.Cars[CarIndex].Specs.AccelerationCurves[CurveIndex].StageTwoExponent;
				double f = Train.Cars[CarIndex].Specs.AccelerationCurvesMultiplier;
				if (Speed <= 0.0)
				{
					return f * a0;
				}
				if (Speed < s1)
				{
					double t = Speed / s1;
					return f * (a0 * (1.0 - t) + a1 * t);
				}
				if (Speed < s2)
				{
					return f * s1 * a1 / Speed;
				}
				return f * s1 * a1 * Math.Pow(s2, e2 - 1.0) * Math.Pow(Speed, -e2);

			}
			return 0.0;
		}