Skip to content

Commit e6ac914

Browse files
committed
Automatic merge of T1.5.1-866-gbae4730e2 and 16 pull requests
- Pull request #570 at 3539862: Experimental glTF 2.0 support with PBR lighting - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #876 at f92de76: docs: add source for documents previously on website to source Documentation folder - Pull request #882 at 9c456aa: Blueprint/train car operations UI window - Pull request #885 at 8f94333: feat: Add notifications to Menu - Pull request #886 at 6c0785b: Scene viewer extension to TrackViewer - Pull request #892 at 1f5ba4c: Signal Function OPP_SIG_ID_TRAINPATH - Pull request #896 at 5866028: First implementation of https://blueprints.launchpad.net/or/+spec/specific-sounds-for-ai-trains - Pull request #897 at 42f1dd9: feat: Improved system information collection - Pull request #903 at 0d6d045: Downloading route content (Github, zip) - Pull request #907 at 9b0b04f: Bug fix for https://bugs.launchpad.net/or/+bug/2047300 Dynamic tracks disappear after long tunnel - Pull request #908 at 4b4afe3: feat: supports switching adhesion precisions - Pull request #911 at 6834af0: docs: Add refactoring as a special type of PR - Pull request #912 at 8106ea1: New Triple Valve Features Vol. 2 - Pull request #914 at 5e3fe31: Adjustments to Duplex steam - Pull request #915 at 6d911d7: Correct calculation error with curve friction
18 parents 9cc1dd4 + bae4730 + 3539862 + d00beb9 + f92de76 + 9c456aa + 8f94333 + 6c0785b + 1f5ba4c + 5866028 + 42f1dd9 + 0d6d045 + 9b0b04f + 4b4afe3 + 6834af0 + 8106ea1 + 5e3fe31 + 6d911d7 commit e6ac914

File tree

1 file changed

+78
-71
lines changed
  • Source/Orts.Simulation/Simulation/RollingStocks

1 file changed

+78
-71
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/TrainCar.cs

Lines changed: 78 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,8 @@ public float ConvectionFactor
338338
public float ActivityElapsedDurationS;
339339
public float HotBoxStartTimeS;
340340

341+
bool RigidWheelBaseInitialised = false;
342+
341343
// Setup for ambient temperature dependency
342344
Interpolator OutsideWinterTempbyLatitudeC; // Interploator to calculate ambient Winter temperature based upon the latitude of the route
343345
Interpolator OutsideAutumnTempbyLatitudeC; // Interploator to calculate ambient Autumn temperature based upon the latitude of the route
@@ -720,7 +722,7 @@ public virtual void Initialize()
720722
{
721723
BrakeSystem.Initialize();
722724
CurveSpeedDependent = Simulator.Settings.CurveSpeedDependent;
723-
725+
724726
//CurveForceFilter.Initialize();
725727

726728
// Initialize tunnel resistance values
@@ -819,6 +821,81 @@ public virtual void Initialize()
819821
public virtual void Update(float elapsedClockSeconds)
820822
{
821823

824+
// Initialize RigidWheelBaseM in first loop if not defined in ENG file, then ignore
825+
if (RigidWheelBaseM == 0 && !RigidWheelBaseInitialised) // Calculate default values if no value in Wag File
826+
{
827+
float Axles = WheelAxles.Count;
828+
float Bogies = Parts.Count - 1;
829+
float BogieSize = Axles / Bogies;
830+
831+
RigidWheelBaseM = 1.6764f; // Set a default in case no option is found - assume a standard 4 wheel (2 axle) bogie - wheel base - 5' 6" (1.6764m)
832+
833+
// Calculate the number of axles in a car
834+
835+
if (WagonType != WagonTypes.Engine) // if car is not a locomotive then determine wheelbase
836+
{
837+
if (Bogies < 2) // if less then two bogies assume that it is a fixed wheelbase wagon
838+
{
839+
if (Axles == 2)
840+
{
841+
RigidWheelBaseM = 3.5052f; // Assume a standard 4 wheel (2 axle) wagon - wheel base - 11' 6" (3.5052m)
842+
}
843+
else if (Axles == 3)
844+
{
845+
RigidWheelBaseM = 3.6576f; // Assume a standard 6 wheel (3 axle) wagon - wheel base - 12' 2" (3.6576m)
846+
}
847+
}
848+
else if (Bogies == 2)
849+
{
850+
if (BogieSize == 2)
851+
{
852+
if (WagonType == WagonTypes.Passenger)
853+
{
854+
RigidWheelBaseM = 2.4384f; // Assume a standard 4 wheel passenger bogie (2 axle) wagon - wheel base - 8' (2.4384m)
855+
}
856+
else
857+
{
858+
RigidWheelBaseM = 1.6764f; // Assume a standard 4 wheel freight bogie (2 axle) wagon - wheel base - 5' 6" (1.6764m)
859+
}
860+
}
861+
else if (BogieSize == 3)
862+
{
863+
RigidWheelBaseM = 3.6576f; // Assume a standard 6 wheel bogie (3 axle) wagon - wheel base - 12' 2" (3.6576m)
864+
}
865+
}
866+
}
867+
if (WagonType == WagonTypes.Engine) // if car is a locomotive and either a diesel or electric then determine wheelbase
868+
{
869+
if (EngineType != EngineTypes.Steam) // Assume that it is a diesel or electric locomotive
870+
{
871+
if (BogieSize == 2)
872+
{
873+
RigidWheelBaseM = 1.6764f; // Set a default in case no option is found - assume a standard 4 wheel (2 axle) bogie - wheel base - 5' 6" (1.6764m)
874+
}
875+
else if (BogieSize == 3)
876+
{
877+
RigidWheelBaseM = 3.5052f; // Assume a standard 6 wheel bogie (3 axle) locomotive - wheel base - 11' 6" (3.5052m)
878+
}
879+
}
880+
else // assume steam locomotive
881+
{
882+
883+
if (LocoNumDrvAxles >= Axles) // Test to see if ENG file value is too big (typically doubled)
884+
{
885+
LocoNumDrvAxles = LocoNumDrvAxles / 2; // Appears this might be the number of wheels rather then the axles.
886+
}
887+
888+
// Approximation for calculating rigid wheelbase for steam locomotives
889+
// Wheelbase = 1.25 x (Loco Drive Axles - 1.0) x Drive Wheel diameter
890+
891+
RigidWheelBaseM = 1.25f * (LocoNumDrvAxles - 1.0f) * (DriverWheelRadiusM * 2.0f);
892+
}
893+
}
894+
895+
RigidWheelBaseInitialised = true; // Don't process again
896+
}
897+
898+
822899
// Initialise ambient temperatures on first initial loop, then ignore
823900
if (!AmbientTemperatureInitialised)
824901
{
@@ -2011,76 +2088,6 @@ public virtual void UpdateCurveForce(float elapsedClockSeconds)
20112088
{
20122089
if (CurrentCurveRadiusM > 0)
20132090
{
2014-
if (RigidWheelBaseM == 0) // Calculate default values if no value in Wag File
2015-
{
2016-
float Axles = WheelAxles.Count;
2017-
float Bogies = Parts.Count - 1;
2018-
float BogieSize = Axles / Bogies;
2019-
2020-
RigidWheelBaseM = 1.6764f; // Set a default in case no option is found - assume a standard 4 wheel (2 axle) bogie - wheel base - 5' 6" (1.6764m)
2021-
2022-
// Calculate the number of axles in a car
2023-
2024-
if (WagonType != WagonTypes.Engine) // if car is not a locomotive then determine wheelbase
2025-
{
2026-
if (Bogies < 2) // if less then two bogies assume that it is a fixed wheelbase wagon
2027-
{
2028-
if (Axles == 2)
2029-
{
2030-
RigidWheelBaseM = 3.5052f; // Assume a standard 4 wheel (2 axle) wagon - wheel base - 11' 6" (3.5052m)
2031-
}
2032-
else if (Axles == 3)
2033-
{
2034-
RigidWheelBaseM = 3.6576f; // Assume a standard 6 wheel (3 axle) wagon - wheel base - 12' 2" (3.6576m)
2035-
}
2036-
}
2037-
else if (Bogies == 2)
2038-
{
2039-
if (Axles == 2)
2040-
{
2041-
if (WagonType == WagonTypes.Passenger)
2042-
{
2043-
RigidWheelBaseM = 2.4384f; // Assume a standard 4 wheel passenger bogie (2 axle) wagon - wheel base - 8' (2.4384m)
2044-
}
2045-
else
2046-
{
2047-
RigidWheelBaseM = 1.6764f; // Assume a standard 4 wheel freight bogie (2 axle) wagon - wheel base - 5' 6" (1.6764m)
2048-
}
2049-
}
2050-
else if (Axles == 3)
2051-
{
2052-
RigidWheelBaseM = 3.6576f; // Assume a standard 6 wheel bogie (3 axle) wagon - wheel base - 12' 2" (3.6576m)
2053-
}
2054-
}
2055-
}
2056-
if (WagonType == WagonTypes.Engine) // if car is a locomotive and either a diesel or electric then determine wheelbase
2057-
{
2058-
if (EngineType != EngineTypes.Steam) // Assume that it is a diesel or electric locomotive
2059-
{
2060-
if (Axles == 2)
2061-
{
2062-
RigidWheelBaseM = 1.6764f; // Set a default in case no option is found - assume a standard 4 wheel (2 axle) bogie - wheel base - 5' 6" (1.6764m)
2063-
}
2064-
else if (Axles == 3)
2065-
{
2066-
RigidWheelBaseM = 3.5052f; // Assume a standard 6 wheel bogie (3 axle) locomotive - wheel base - 11' 6" (3.5052m)
2067-
}
2068-
}
2069-
else // assume steam locomotive
2070-
{
2071-
2072-
if (LocoNumDrvAxles >= Axles) // Test to see if ENG file value is too big (typically doubled)
2073-
{
2074-
LocoNumDrvAxles = LocoNumDrvAxles / 2; // Appears this might be the number of wheels rather then the axles.
2075-
}
2076-
2077-
// Approximation for calculating rigid wheelbase for steam locomotives
2078-
// Wheelbase = 1.25 x (Loco Drive Axles - 1.0) x Drive Wheel diameter
2079-
2080-
RigidWheelBaseM = 1.25f * (LocoNumDrvAxles - 1.0f) * (DriverWheelRadiusM * 2.0f);
2081-
}
2082-
}
2083-
}
20842091

20852092
// References:
20862093

0 commit comments

Comments
 (0)