Skip to content

Commit b227eec

Browse files
committed
adjust steam effects
1 parent b48ac9f commit b227eec

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ public class MSTSSteamLocomotive : MSTSLocomotive
152152
float BoosterCylinderExhaustOpenFactor;
153153
float BoosterEngineSpeedRpM;
154154
bool BoosterAirisLow = false;
155+
int BoosterEngineNumber;
155156

156157
/// <summary>
157158
/// Grate limit of locomotive exceedeed?
@@ -1585,6 +1586,8 @@ public override void Initialize()
15851586
float Tractiveratio = 0.2629f * SteamEngines[i].BoosterCutoff + 0.5971f;
15861587

15871588
SteamEngines[i].MaxTractiveEffortLbf = Tractiveratio * MaxBoilerPressurePSI * Me.ToIn(SteamEngines[i].CylindersDiameterM) * Me.ToIn(SteamEngines[i].CylindersDiameterM) * Me.ToIn(SteamEngines[i].CylindersStrokeM) * SteamEngines[i].BoosterGearRatio / (Me.ToIn(SteamEngines[i].AttachedAxle.WheelRadiusM) * 2.0f);
1589+
1590+
BoosterEngineNumber = i;
15881591
}
15891592
}
15901593

@@ -2593,12 +2596,11 @@ private void UpdateFX(float elapsedClockSeconds)
25932596
TotalNumberCyindersEng1 = SteamEngines[0].NumberCylinders;
25942597
}
25952598

2596-
// Engine #1
2597-
// Find
2599+
// Engine #1
25982600
for (int i = 0; i < TotalNumberCyindersEng1; i++)
25992601
{
26002602
var crankAngleDiffRad = WheelCrankAngleDiffRad[i];
2601-
float normalisedCrankAngleRad = NormalisedCrankAngle(i, crankAngleDiffRad);
2603+
float normalisedCrankAngleRad = NormalisedCrankAngle(0, i, crankAngleDiffRad);
26022604

26032605
// Exhaust crank angle
26042606
float exhaustCrankAngleRad = 0;
@@ -2820,14 +2822,13 @@ private void UpdateFX(float elapsedClockSeconds)
28202822

28212823
if (SteamEngines.Count > 1)
28222824
{
2823-
var TotalNumberCyindersEng2 = SteamEngines[1].NumberCylinders + SteamEngines[1].LPNumberCylinders;
2825+
var TotalNumberCyindersEng2 = SteamEngines[1].NumberCylinders; // currently assume 2nd engine is non-compound
28242826

2825-
// Engine #2
2826-
// Find
2827+
// Engine #2
28272828
for (int i = 0; i < TotalNumberCyindersEng2; i++)
28282829
{
28292830
var crankAngleDiffRad = WheelCrankAngleDiffEng2Rad[i];
2830-
float normalisedCrankAngleRad = NormalisedCrankAngle(i, crankAngleDiffRad);
2831+
float normalisedCrankAngleRad = NormalisedCrankAngle(1,i, crankAngleDiffRad);
28312832

28322833
// Exhaust crank angle
28332834
float exhaustCrankAngleRad = 0;
@@ -2943,7 +2944,7 @@ private void UpdateFX(float elapsedClockSeconds)
29432944

29442945
if (BoosterGearsEngaged)
29452946
{
2946-
normalisedCrankAngleRad = NormalisedCrankAngle(i, crankAngleDiffRad);
2947+
normalisedCrankAngleRad = NormalisedCrankAngle(BoosterEngineNumber,i, crankAngleDiffRad);
29472948
}
29482949
else
29492950
{
@@ -2993,7 +2994,7 @@ private void UpdateFX(float elapsedClockSeconds)
29932994

29942995
if (BoosterGearsEngaged)
29952996
{
2996-
normalisedCrankAngleRad = NormalisedCrankAngle(i, crankAngleDiffRad);
2997+
normalisedCrankAngleRad = NormalisedCrankAngle(BoosterEngineNumber, i, crankAngleDiffRad);
29972998
}
29982999
else
29993000
{
@@ -5763,7 +5764,7 @@ private void UpdateSteamTractiveForce(float elapsedClockSeconds, float locomotiv
57635764
}
57645765

57655766
var crankAngleDiffRad = WheelCrankAngleDiffRad[i];
5766-
float normalisedCrankAngleRad = NormalisedCrankAngle(i, crankAngleDiffRad);
5767+
float normalisedCrankAngleRad = NormalisedCrankAngle(numberofengine, i, crankAngleDiffRad);
57675768

57685769
// Crank angles
57695770
float sin = (float)Math.Sin(crankAngleRad);
@@ -6299,9 +6300,9 @@ private float NormalisedBoosterIdleCrankAngle(int cylinderNumber, float crankAng
62996300
/// <summary>
63006301
/// Normalise crank angle so that it is a value between 0 and 360 starting at the real crank angle difference
63016302
/// </summary>
6302-
private float NormalisedCrankAngle(int cylinderNumber, float crankAngleRad)
6303+
private float NormalisedCrankAngle(int enginenumber, int cylinderNumber, float crankAngleRad)
63036304
{
6304-
float normalisedCrankAngleRad = (float)MathHelper.WrapAngle((float)LocomotiveAxles[0].AxlePositionRad + crankAngleRad);
6305+
float normalisedCrankAngleRad = (float)MathHelper.WrapAngle((float)LocomotiveAxles[enginenumber].AxlePositionRad + crankAngleRad);
63056306

63066307
if (normalisedCrankAngleRad < 0)
63076308
{

0 commit comments

Comments
 (0)