@@ -163,7 +163,7 @@ public TrainCar LastCar
163163 public bool HuDIsWheelSlip;
164164 public bool IsBrakeSkid;
165165
166- public bool SoundSetupInitialise = true;
166+ public bool TrackJointSoundSetupInitialise = true;
167167
168168 public bool HotBoxSetOnTrain = false;
169169 public int ActivityDurationS
@@ -2009,26 +2009,69 @@ public virtual void Update(float elapsedClockSeconds, bool auxiliaryUpdate = tru
20092009 // Initialise track joint trigger points. Sets the trigger point for the track joint reletative to other cars.
20102010 // This is then reset every time a track joint is triggered, and positioned the same distance apart, hence reletative positions are maintained.
20112011 // Only runs once at start up.
2012- if (SoundSetupInitialise )
2012+ if (TrackJointSoundSetupInitialise )
20132013 {
20142014 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+
20162019
20172020 foreach (var car in Cars)
20182021 {
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+
20212033
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)
20242047 {
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+
20262070 }
20272071
2028- // Trace.TraceInformation("Initialise Track Joints - CarID {0} RealDistance {1} TrainLength {2}", car.CarID, car.realTimeTrackJointDistanceM, trainLengthM);
20292072 }
20302073
2031- SoundSetupInitialise = false;
2074+ TrackJointSoundSetupInitialise = false;
20322075 }
20332076
20342077 } // end Update
0 commit comments