Skip to content

Commit 9dc6b3b

Browse files
committed
correct issue with 2 axle car positions not being processed.
1 parent c45a926 commit 9dc6b3b

File tree

2 files changed

+66
-67
lines changed

2 files changed

+66
-67
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/TrainCar.cs

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,84 +1921,84 @@ public float GetAngleofAttackmRad()
19211921
///
19221922
public float GetTrackSwitchTrigger(float elapsedClockSeconds)
19231923
{
1924-
1925-
// Timer to hold trigger on for a period of time
1926-
if (carOnSwitchTriggered)
1927-
{
1928-
switchTriggerDelayedS -= elapsedClockSeconds;
1929-
if (switchTriggerDelayedS < 0)
1930-
switchTriggerDelayedS = 0;
1931-
}
1932-
1933-
if (IsOverSwitch && !carOnSwitchTriggered)
1934-
{
1935-
carOnSwitchTriggered = true;
1936-
return 1; // Set trigger for car on switch
1937-
}
1938-
else if (!IsOverSwitch && switchTriggerDelayedS == 0 && carOnSwitchTriggered)
1939-
{
1940-
carOnSwitchTriggered = false;
1941-
switchTriggerDelayedS = 0.1f;
1942-
return 0; // Reset trigger when off
1943-
}
1944-
else if (carOnSwitchTriggered && switchTriggerDelayedS > 0)
1945-
{
1946-
return 1; // ensure trigger stays on until time out
1947-
}
1948-
1949-
return 0; // default if no result found
1924+
1925+
// Timer to hold trigger on for a period of time
1926+
if (carOnSwitchTriggered)
1927+
{
1928+
switchTriggerDelayedS -= elapsedClockSeconds;
1929+
if (switchTriggerDelayedS < 0)
1930+
switchTriggerDelayedS = 0;
19501931
}
19511932

1933+
if (IsOverSwitch && !carOnSwitchTriggered)
1934+
{
1935+
carOnSwitchTriggered = true;
1936+
return 1; // Set trigger for car on switch
1937+
}
1938+
else if (!IsOverSwitch && switchTriggerDelayedS == 0 && carOnSwitchTriggered)
1939+
{
1940+
carOnSwitchTriggered = false;
1941+
switchTriggerDelayedS = 0.1f;
1942+
return 0; // Reset trigger when off
1943+
}
1944+
else if (carOnSwitchTriggered && switchTriggerDelayedS > 0)
1945+
{
1946+
return 1; // ensure trigger stays on until time out
1947+
}
1948+
1949+
return 0; // default if no result found
1950+
}
1951+
19521952
/// <summary>
19531953
/// Get the track joint trigger for a car as it goes over a joint
19541954
/// </summary>
19551955
/// <returns>1 = track joint, 0 = no track joint</returns>
19561956
///
19571957
public float GetTrackJointPosition(float elapsedClockSeconds)
19581958
{
1959-
if ((float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM == 0)
1959+
if ((float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM == 0)
1960+
{
1961+
return 0; // Rail joints have not been selected
1962+
}
1963+
else
1964+
{
1965+
// Calculate remaining distance beween track joints
1966+
realTimeTrackJointDistanceM -= AbsSpeedMpS * elapsedClockSeconds;
1967+
if (realTimeTrackJointDistanceM < 0)
1968+
realTimeTrackJointDistanceM = 0;
1969+
if (realTimeTrackJointDistanceM == 0)
1970+
{
1971+
jointTrigger = 1;
1972+
carOnJointTriggered = true;
1973+
jointTriggerDelayedS -= elapsedClockSeconds;
1974+
if (jointTriggerDelayedS < 0)
1975+
jointTriggerDelayedS = 0;
1976+
}
1977+
else
1978+
{
1979+
jointTrigger = 0;
1980+
}
1981+
if (jointTrigger == 1 && jointTriggerDelayedS == 0)
1982+
{
1983+
jointTriggerDelayedS = 0.1f; // Ensure enough delay to trigger sound
1984+
jointTrigger = 0;
1985+
// To ensure that track joints are never closer then 1 sec apart set to speedmps when distance traveled in 1 sec is greater then the joint distance.
1986+
if (AbsSpeedMpS > (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM)
19601987
{
1961-
return 0; // Rail joints have not been selected
1988+
realTimeTrackJointDistanceM = AbsSpeedMpS;
1989+
jointSpeedMpS = AbsSpeedMpS;
19621990
}
1963-
else
1991+
else
19641992
{
1965-
// Calculate remaining distance beween track joints
1966-
realTimeTrackJointDistanceM -= AbsSpeedMpS * elapsedClockSeconds;
1967-
if (realTimeTrackJointDistanceM < 0)
1968-
realTimeTrackJointDistanceM = 0;
1969-
if (realTimeTrackJointDistanceM == 0)
1970-
{
1971-
jointTrigger = 1;
1972-
carOnJointTriggered = true;
1973-
jointTriggerDelayedS -= elapsedClockSeconds;
1974-
if (jointTriggerDelayedS < 0)
1975-
jointTriggerDelayedS = 0;
1976-
}
1977-
else
1978-
{
1979-
jointTrigger = 0;
1980-
}
1981-
if (jointTrigger == 1 && jointTriggerDelayedS == 0)
1982-
{
1983-
jointTriggerDelayedS = 0.1f; // Ensure enough delay to trigger sound
1984-
jointTrigger = 0;
1985-
// To ensure that track joints are never closer then 1 sec apart set to speedmps when distance traveled in 1 sec is greater then the joint distance.
1986-
if (AbsSpeedMpS > (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM)
1987-
{
1988-
realTimeTrackJointDistanceM = AbsSpeedMpS;
1989-
jointSpeedMpS = AbsSpeedMpS;
1990-
}
1991-
else
1992-
{
1993-
realTimeTrackJointDistanceM = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM; // Reset for next pass
1994-
jointSpeedMpS = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM;
1995-
}
1996-
carOnJointTriggered = false;
1997-
}
1998-
1999-
return jointTrigger;
1993+
realTimeTrackJointDistanceM = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM; // Reset for next pass
1994+
jointSpeedMpS = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM;
20001995
}
2001-
}
1996+
carOnJointTriggered = false;
1997+
}
1998+
1999+
return jointTrigger;
2000+
}
2001+
}
20022002

20032003

20042004
/// <summary>
@@ -2903,7 +2903,7 @@ public void SetUpWheels()
29032903
}
29042904
}
29052905
// Using WheelAxles.Count test to control WheelAxlesLoaded flag.
2906-
if (WheelAxles.Count > 2)
2906+
if (WheelAxles.Count >= 2) // Some cars only have two axles.
29072907
{
29082908
WheelAxles.Sort(WheelAxles[0]);
29092909
WheelAxlesLoaded = true;

Source/RunActivity/Viewer3D/Sound.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1283,7 +1283,6 @@ public SoundStream(Orts.Formats.Msts.SMSStream mstsStream, Events.Source eventSo
12831283
{
12841284
Triggers.Add(new ORTSJoint8AxleTrigger(this, (Orts.Formats.Msts.Joint_Trigger_8)trigger));
12851285
}
1286-
12871286
else if (trigger.GetType() == typeof(Orts.Formats.Msts.Switch_Trigger_2) && soundSource.Car != null)
12881287
{
12891288
Triggers.Add(new ORTSSwitch2AxleTrigger(this, (Orts.Formats.Msts.Switch_Trigger_2)trigger));

0 commit comments

Comments
 (0)