In method updateSpeedInfo() in Train.cs there is this code excerpt:
float actualSpeedMpS = IsFreight ? thisObject.speed_freight : thisObject.speed_passenger; if (thisObject.ObjectDetails.isSignal) { if (actualSpeedMpS > 0 && (thisObject.speed_flag == 0 || !Simulator.TimetableMode)) { validSpeedSignalMpS = actualSpeedMpS; if (validSpeedSignalMpS > Math.Min(validSpeedLimitMpS, validTempSpeedLimitMpS)) { if (validSpeedMpS < Math.Min(validSpeedLimitMpS, validTempSpeedLimitMpS)) { actualSpeedMpS = Math.Min(validSpeedLimitMpS, validTempSpeedLimitMpS); } else { actualSpeedMpS = -1; } #if DEBUG_REPORTS File.AppendAllText(@"C:\temp\printproc.txt", "Speed reset : Signal : " + thisObject.ObjectDetails.thisRef.ToString() + " : " + validSpeedSignalMpS.ToString() + " ; Limit : " + validSpeedLimitMpS.ToString() + "\n"); #endif } } else { validSpeedSignalMpS = TrainMaxSpeedMpS; float newSpeedMpS = Math.Min(validSpeedSignalMpS, Math.Min(validSpeedLimitMpS, validTempSpeedLimitMpS)); if (newSpeedMpS != validSpeedMpS) { actualSpeedMpS = newSpeedMpS; } else { actualSpeedMpS = -1; } } thisObject.actual_speed = actualSpeedMpS; if (actualSpeedMpS > 0) { validSpeedMpS = actualSpeedMpS; } }
Why is in this line
if (actualSpeedMpS > 0 && (thisObject.speed_flag == 0 || !Simulator.TimetableMode))
the test made with > 0 instead of >= 0?
I'm getting a wrong actualSpeedMpS for a signal at stop. By changing the compare condition this is solved.