Skip to content

Commit 20a4167

Browse files
committed
Automatic merge of T1.6-104-gfe3b901f2 and 13 pull requests
- Pull request #1156 at f46d5f2: Fix incorrectly disabled options in train operations window - Pull request #1091 at 492795a: Automatic speed control - Pull request #1115 at cb97e1d: Do not activate ETS switch if no suitable cars are attached - Pull request #1120 at ba3c47f: Automatically Calculate Friction Values if Missing - Pull request #1121 at 91d2d26: Manually Override Articulation - Pull request #1124 at e241a0d: Built-in PBL2 brake controller - Pull request #1157 at 39cd994: Dynamic brake authorization by TCS - Pull request #1159 at 48c9a63: Skip OR warnings about TSRE-specific token Ruler - Pull request #1161 at 6cfe4e2: Fix string trim in .ini files - Pull request #1162 at 2516cce: specifies precedence of DDS over ACE - Pull request #1082 at 5845a1a: Allow variable water level in glass gauge - Pull request #1128 at 1d7643d: Particle Emitter Overhaul - Pull request #1160 at 9dc6b3b: Route Based TTrack Sounds
15 parents fbe9f5c + fe3b901 + f46d5f2 + 492795a + cb97e1d + ba3c47f + 91d2d26 + e241a0d + 39cd994 + 48c9a63 + 6cfe4e2 + 2516cce + 5845a1a + 1d7643d + 9dc6b3b commit 20a4167

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
@@ -1924,84 +1924,84 @@ public float GetAngleofAttackmRad()
19241924
///
19251925
public float GetTrackSwitchTrigger(float elapsedClockSeconds)
19261926
{
1927-
1928-
// Timer to hold trigger on for a period of time
1929-
if (carOnSwitchTriggered)
1930-
{
1931-
switchTriggerDelayedS -= elapsedClockSeconds;
1932-
if (switchTriggerDelayedS < 0)
1933-
switchTriggerDelayedS = 0;
1934-
}
1935-
1936-
if (IsOverSwitch && !carOnSwitchTriggered)
1937-
{
1938-
carOnSwitchTriggered = true;
1939-
return 1; // Set trigger for car on switch
1940-
}
1941-
else if (!IsOverSwitch && switchTriggerDelayedS == 0 && carOnSwitchTriggered)
1942-
{
1943-
carOnSwitchTriggered = false;
1944-
switchTriggerDelayedS = 0.1f;
1945-
return 0; // Reset trigger when off
1946-
}
1947-
else if (carOnSwitchTriggered && switchTriggerDelayedS > 0)
1948-
{
1949-
return 1; // ensure trigger stays on until time out
1950-
}
1951-
1952-
return 0; // default if no result found
1927+
1928+
// Timer to hold trigger on for a period of time
1929+
if (carOnSwitchTriggered)
1930+
{
1931+
switchTriggerDelayedS -= elapsedClockSeconds;
1932+
if (switchTriggerDelayedS < 0)
1933+
switchTriggerDelayedS = 0;
19531934
}
19541935

1936+
if (IsOverSwitch && !carOnSwitchTriggered)
1937+
{
1938+
carOnSwitchTriggered = true;
1939+
return 1; // Set trigger for car on switch
1940+
}
1941+
else if (!IsOverSwitch && switchTriggerDelayedS == 0 && carOnSwitchTriggered)
1942+
{
1943+
carOnSwitchTriggered = false;
1944+
switchTriggerDelayedS = 0.1f;
1945+
return 0; // Reset trigger when off
1946+
}
1947+
else if (carOnSwitchTriggered && switchTriggerDelayedS > 0)
1948+
{
1949+
return 1; // ensure trigger stays on until time out
1950+
}
1951+
1952+
return 0; // default if no result found
1953+
}
1954+
19551955
/// <summary>
19561956
/// Get the track joint trigger for a car as it goes over a joint
19571957
/// </summary>
19581958
/// <returns>1 = track joint, 0 = no track joint</returns>
19591959
///
19601960
public float GetTrackJointPosition(float elapsedClockSeconds)
19611961
{
1962-
if ((float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM == 0)
1962+
if ((float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM == 0)
1963+
{
1964+
return 0; // Rail joints have not been selected
1965+
}
1966+
else
1967+
{
1968+
// Calculate remaining distance beween track joints
1969+
realTimeTrackJointDistanceM -= AbsSpeedMpS * elapsedClockSeconds;
1970+
if (realTimeTrackJointDistanceM < 0)
1971+
realTimeTrackJointDistanceM = 0;
1972+
if (realTimeTrackJointDistanceM == 0)
1973+
{
1974+
jointTrigger = 1;
1975+
carOnJointTriggered = true;
1976+
jointTriggerDelayedS -= elapsedClockSeconds;
1977+
if (jointTriggerDelayedS < 0)
1978+
jointTriggerDelayedS = 0;
1979+
}
1980+
else
1981+
{
1982+
jointTrigger = 0;
1983+
}
1984+
if (jointTrigger == 1 && jointTriggerDelayedS == 0)
1985+
{
1986+
jointTriggerDelayedS = 0.1f; // Ensure enough delay to trigger sound
1987+
jointTrigger = 0;
1988+
// 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.
1989+
if (AbsSpeedMpS > (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM)
19631990
{
1964-
return 0; // Rail joints have not been selected
1991+
realTimeTrackJointDistanceM = AbsSpeedMpS;
1992+
jointSpeedMpS = AbsSpeedMpS;
19651993
}
1966-
else
1994+
else
19671995
{
1968-
// Calculate remaining distance beween track joints
1969-
realTimeTrackJointDistanceM -= AbsSpeedMpS * elapsedClockSeconds;
1970-
if (realTimeTrackJointDistanceM < 0)
1971-
realTimeTrackJointDistanceM = 0;
1972-
if (realTimeTrackJointDistanceM == 0)
1973-
{
1974-
jointTrigger = 1;
1975-
carOnJointTriggered = true;
1976-
jointTriggerDelayedS -= elapsedClockSeconds;
1977-
if (jointTriggerDelayedS < 0)
1978-
jointTriggerDelayedS = 0;
1979-
}
1980-
else
1981-
{
1982-
jointTrigger = 0;
1983-
}
1984-
if (jointTrigger == 1 && jointTriggerDelayedS == 0)
1985-
{
1986-
jointTriggerDelayedS = 0.1f; // Ensure enough delay to trigger sound
1987-
jointTrigger = 0;
1988-
// 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.
1989-
if (AbsSpeedMpS > (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM)
1990-
{
1991-
realTimeTrackJointDistanceM = AbsSpeedMpS;
1992-
jointSpeedMpS = AbsSpeedMpS;
1993-
}
1994-
else
1995-
{
1996-
realTimeTrackJointDistanceM = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM; // Reset for next pass
1997-
jointSpeedMpS = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM;
1998-
}
1999-
carOnJointTriggered = false;
2000-
}
2001-
2002-
return jointTrigger;
1996+
realTimeTrackJointDistanceM = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM; // Reset for next pass
1997+
jointSpeedMpS = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM;
20031998
}
2004-
}
1999+
carOnJointTriggered = false;
2000+
}
2001+
2002+
return jointTrigger;
2003+
}
2004+
}
20052005

20062006

20072007
/// <summary>
@@ -2906,7 +2906,7 @@ public void SetUpWheels()
29062906
}
29072907
}
29082908
// Using WheelAxles.Count test to control WheelAxlesLoaded flag.
2909-
if (WheelAxles.Count > 2)
2909+
if (WheelAxles.Count >= 2) // Some cars only have two axles.
29102910
{
29112911
WheelAxles.Sort(WheelAxles[0]);
29122912
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)