@@ -163,7 +163,7 @@ public TrainCar LastCar
163
163
public bool HuDIsWheelSlip;
164
164
public bool IsBrakeSkid;
165
165
166
- public bool SoundSetupInitialise = true;
166
+ public bool TrackJointSoundSetupInitialise = true;
167
167
168
168
public bool HotBoxSetOnTrain = false;
169
169
public int ActivityDurationS
@@ -2009,26 +2009,69 @@ public virtual void Update(float elapsedClockSeconds, bool auxiliaryUpdate = tru
2009
2009
// Initialise track joint trigger points. Sets the trigger point for the track joint reletative to other cars.
2010
2010
// This is then reset every time a track joint is triggered, and positioned the same distance apart, hence reletative positions are maintained.
2011
2011
// Only runs once at start up.
2012
- if (SoundSetupInitialise )
2012
+ if (TrackJointSoundSetupInitialise )
2013
2013
{
2014
2014
var trackjointdistanceM = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM;
2015
- float trainLengthM = 0;
2015
+ var trainLengthM = 0.0f;
2016
+ var cummulativeTrackJointDistanceM = 0.0f;
2017
+ var remainDistanceM = (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM;
2018
+
2016
2019
2017
2020
foreach (var car in Cars)
2018
2021
{
2019
- car.realTimeTrackJointDistanceM = trackjointdistanceM + trainLengthM;
2020
- trainLengthM += car.CarLengthM;
2022
+ // Initialise from the next track joint
2023
+
2024
+ // if remain distance has gone negative then car has moved over the next track joint
2025
+ if (trackjointdistanceM > car.CarLengthM)
2026
+ {
2027
+
2028
+ car.realTimeTrackJointDistanceM = cummulativeTrackJointDistanceM;
2029
+ trainLengthM += car.CarLengthM;
2030
+ cummulativeTrackJointDistanceM += car.CarLengthM;
2031
+ remainDistanceM -= car.CarLengthM;
2032
+
2021
2033
2022
- // Track joint "reached" move car joint into next track joint sesction
2023
- if (trainLengthM > (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM)
2034
+ // Trace.TraceInformation("Initialise Track Joints> - CarID {0} RealDistance {1} TrainLength {2} TRackJointDistance {3} CarLength {4} CumDistance {5} RemDistance {6}", car.CarID, car.realTimeTrackJointDistanceM, trainLengthM, trackjointdistanceM, car.CarLengthM, cummulativeTrackJointDistanceM, remainDistanceM);
2035
+
2036
+ // the next track joint has been reached reset all parameters in preparation for the next pass
2037
+ if (remainDistanceM < 0.0f)
2038
+ {
2039
+ cummulativeTrackJointDistanceM = Math.Abs(remainDistanceM);
2040
+ remainDistanceM = trackjointdistanceM - cummulativeTrackJointDistanceM;
2041
+ // Trace.TraceInformation("Reset> - Cum {0} Rem {1}", cummulativeTrackJointDistanceM, remainDistanceM);
2042
+ }
2043
+
2044
+ }
2045
+ // Trackjoint less then Car length
2046
+ else if (trackjointdistanceM < car.CarLengthM)
2024
2047
{
2025
- trainLengthM -= (float)Simulator.TRK.Tr_RouteFile.DistanceBetweenTrackJointsM;
2048
+
2049
+ car.realTimeTrackJointDistanceM = cummulativeTrackJointDistanceM;
2050
+ trainLengthM += car.CarLengthM;
2051
+ cummulativeTrackJointDistanceM += trackjointdistanceM;
2052
+ remainDistanceM -= car.CarLengthM;
2053
+
2054
+ // Trace.TraceInformation("Initialise Track Joints< - CarID {0} RealDistance {1} TrainLength {2} TRackJointDistance {3} CarLength {4} CumDistance {5} RemDistance {6}", car.CarID, car.realTimeTrackJointDistanceM, trainLengthM, trackjointdistanceM, car.CarLengthM, cummulativeTrackJointDistanceM, remainDistanceM);
2055
+
2056
+ if (remainDistanceM < 0.0f)
2057
+ {
2058
+
2059
+ while (Math.Abs(remainDistanceM) > trackjointdistanceM)
2060
+ {
2061
+ remainDistanceM += trackjointdistanceM;
2062
+ // Trace.TraceInformation("Reset Remain< - CarID {0}, remainDistanceM {1}", car.CarID, remainDistanceM);
2063
+ }
2064
+
2065
+ cummulativeTrackJointDistanceM = Math.Abs(remainDistanceM);
2066
+ remainDistanceM = trackjointdistanceM - cummulativeTrackJointDistanceM;
2067
+ // Trace.TraceInformation("Reset< - Cum {0} Rem {1}", cummulativeTrackJointDistanceM, remainDistanceM);
2068
+ }
2069
+
2026
2070
}
2027
2071
2028
- // Trace.TraceInformation("Initialise Track Joints - CarID {0} RealDistance {1} TrainLength {2}", car.CarID, car.realTimeTrackJointDistanceM, trainLengthM);
2029
2072
}
2030
2073
2031
- SoundSetupInitialise = false;
2074
+ TrackJointSoundSetupInitialise = false;
2032
2075
}
2033
2076
2034
2077
} // end Update
0 commit comments