diff --git a/Source/Orts.Simulation/Common/Scripting/ScriptManager.cs b/Source/Orts.Simulation/Common/Scripting/ScriptManager.cs index a7f47af9..69cfcbc9 100644 --- a/Source/Orts.Simulation/Common/Scripting/ScriptManager.cs +++ b/Source/Orts.Simulation/Common/Scripting/ScriptManager.cs @@ -47,6 +47,7 @@ static CompilerParameters GetCompilerParameters() cp.ReferencedAssemblies.Add("System.Core.dll"); cp.ReferencedAssemblies.Add("ORTS.Common.dll"); cp.ReferencedAssemblies.Add("Orts.Simulation.dll"); + cp.ReferencedAssemblies.Add("Orts.Formats.Msts.dll"); return cp; } diff --git a/Source/Orts.Simulation/Simulation/Signalling/Signals.cs b/Source/Orts.Simulation/Simulation/Signalling/Signals.cs index 6b765a25..dbc66c25 100644 --- a/Source/Orts.Simulation/Simulation/Signalling/Signals.cs +++ b/Source/Orts.Simulation/Simulation/Signalling/Signals.cs @@ -1288,7 +1288,7 @@ public void SetNumSignalHeads() //================================================================================================// /// /// Find_Next_Object_InRoute : find next item along path of train - using Route List (only forward) - /// Objects to search for : SpeedPost, Normal Signal + /// Objects to search for : SpeedPost, Signal /// /// Usage : /// always set : RouteList, RouteNodeIndex, distance along RouteNode, fnType @@ -1382,20 +1382,21 @@ public void SetNumSignalHeads() } } } - else if (fn_type == MstsSignalFunction.DISTANCE) + // other fn_types + else { TrackCircuitSignalList thisSignalList = - thisSection.CircuitItems.TrackCircuitSignals[actDirection][(int)MstsSignalFunction.DISTANCE]; + thisSection.CircuitItems.TrackCircuitSignals[actDirection][(int)fn_type]; locstate = ObjectItemInfo.ObjectItemFindState.None; - if (thisSignalList.TrackCircuitItem.Count > 0) + foreach (TrackCircuitSignalItem thisSignal in thisSignalList.TrackCircuitItem) { - TrackCircuitSignalItem thisSignal = thisSignalList.TrackCircuitItem[0]; if (thisSignal.SignalLocation > lengthOffset) { locstate = ObjectItemInfo.ObjectItemFindState.Object; foundObject = thisSignal.SignalRef; totalLength += (thisSignal.SignalLocation - lengthOffset); + break; } } }