Skip to content

Commit 5b753d0

Browse files
authored
Merge pull request #679 from cesarBLG/signed-distance-scripts
Provide travelled distance to TCS scripts taking into account the running direction
2 parents 202962f + 223aae6 commit 5b753d0

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

Source/Orts.Simulation/Common/Scripting/TrainControlSystem.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,10 @@ public abstract class TrainControlSystem : AbstractTrainScriptClass
273273
/// </summary>
274274
public Func<float> LineSpeedMpS;
275275
/// <summary>
276+
/// Running total of distance travelled - negative or positive depending on train direction
277+
/// </summary>
278+
public Func<float> SignedDistanceM;
279+
/// <summary>
276280
/// True if starting from terminal station (no track behind the train).
277281
/// </summary>
278282
public Func<bool> DoesStartFromTerminalStation;

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/TrainControlSystem.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ public void Initialize()
373373
Script.AltitudeM = () => Locomotive.WorldPosition.Location.Y;
374374
Script.CurrentGradientPercent = () => -Locomotive.CurrentElevationPercent;
375375
Script.LineSpeedMpS = () => (float)Simulator.TRK.Tr_RouteFile.SpeedLimit;
376+
Script.SignedDistanceM = () => Locomotive.Train.DistanceTravelledM;
376377
Script.DoesStartFromTerminalStation = () => DoesStartFromTerminalStation();
377378
Script.IsColdStart = () => Locomotive.Train.ColdStart;
378379
Script.GetTrackNodeOffset = () => Locomotive.Train.FrontTDBTraveller.TrackNodeLength - Locomotive.Train.FrontTDBTraveller.TrackNodeOffset;
@@ -659,7 +660,7 @@ SignalFeatures NextGenericSignalFeatures(string signalFunctionTypeName, int item
659660

660661
var functionHead = trainSignal.SignalObject.SignalHeads.Find(head => head.ORTSsigFunctionIndex == fn_type);
661662
signalTypeName = functionHead.SignalTypeName;
662-
if (functionHead.draw_state >= 0)
663+
if (functionHead.signalType.DrawStates.Any(d => d.Value.Index == functionHead.draw_state))
663664
{
664665
drawStateName = functionHead.signalType.DrawStates.First(d => d.Value.Index == functionHead.draw_state).Value.Name;
665666
}

0 commit comments

Comments
 (0)