@@ -500,6 +500,23 @@ public virtual void LoadFromWagFile(string wagFilePath)
500
500
}
501
501
}
502
502
503
+ // Should always be at least one bogie on rolling stock. If is zero then NaN error occurs.
504
+ if ( WagonNumBogies == 0 )
505
+ {
506
+ WagonNumBogies = 1 ;
507
+ }
508
+
509
+ // Set wheel flange parameters to default values.
510
+ if ( MaximumWheelFlangeAngleRad == 0 )
511
+ {
512
+ MaximumWheelFlangeAngleRad = 1.22173f ; // Default = 70 deg - Pre 1990 AAR 1:20 wheel
513
+ }
514
+
515
+ if ( WheelFlangeLengthM == 0 )
516
+ {
517
+ WheelFlangeLengthM = 0.0254f ; // Height = 1.00in - Pre 1990 AAR 1:20 wheel
518
+ }
519
+
503
520
// Initialise steam heat parameters
504
521
if ( TrainHeatBoilerWaterUsageGalukpH == null ) // If no table entered in WAG file, then use the default table
505
522
{
@@ -1015,6 +1032,8 @@ public virtual void Parse(string lowercasetoken, STFReader stf)
1015
1032
case "wagon(ortslengthairhose" : CarAirHoseLengthM = stf . ReadFloatBlock ( STFReader . UNITS . Distance , null ) ; break ;
1016
1033
case "wagon(ortshorizontallengthairhose" : CarAirHoseHorizontalLengthM = stf . ReadFloatBlock ( STFReader . UNITS . Distance , null ) ; break ;
1017
1034
case "wagon(ortslengthcouplerface" : CarCouplerFaceLengthM = stf . ReadFloatBlock ( STFReader . UNITS . Distance , null ) ; break ;
1035
+ case "wagon(ortswheelflangelength" : WheelFlangeLengthM = stf . ReadFloatBlock ( STFReader . UNITS . Distance , null ) ; break ;
1036
+ case "wagon(ortsmaximumwheelflangeangle" : MaximumWheelFlangeAngleRad = stf . ReadFloatBlock ( STFReader . UNITS . Angle , null ) ; break ;
1018
1037
case "wagon(ortstrackgauge" :
1019
1038
stf . MustMatch ( "(" ) ;
1020
1039
TrackGaugeM = stf . ReadFloat ( STFReader . UNITS . Distance , null ) ;
@@ -1472,6 +1491,8 @@ public virtual void Copy(MSTSWagon copy)
1472
1491
CarCouplerFaceLengthM = copy . CarCouplerFaceLengthM ;
1473
1492
CarAirHoseLengthM = copy . CarAirHoseLengthM ;
1474
1493
CarAirHoseHorizontalLengthM = copy . CarAirHoseHorizontalLengthM ;
1494
+ MaximumWheelFlangeAngleRad = copy . MaximumWheelFlangeAngleRad ;
1495
+ WheelFlangeLengthM = copy . WheelFlangeLengthM ;
1475
1496
AuxTenderWaterMassKG = copy . AuxTenderWaterMassKG ;
1476
1497
TenderWagonMaxCoalMassKG = copy . TenderWagonMaxCoalMassKG ;
1477
1498
TenderWagonMaxWaterMassKG = copy . TenderWagonMaxWaterMassKG ;
@@ -1710,6 +1731,11 @@ public override void Save(BinaryWriter outf)
1710
1731
1711
1732
outf . Write ( WheelBrakeSlideProtectionActive ) ;
1712
1733
outf . Write ( WheelBrakeSlideProtectionTimerS ) ;
1734
+ outf . Write ( AngleOfAttackRad ) ;
1735
+ outf . Write ( DerailClimbDistanceM ) ;
1736
+ outf . Write ( DerailPossible ) ;
1737
+ outf . Write ( DerailExpected ) ;
1738
+ outf . Write ( DerailElapsedTimeS ) ;
1713
1739
1714
1740
base . Save ( outf ) ;
1715
1741
}
@@ -1757,6 +1783,11 @@ public override void Restore(BinaryReader inf)
1757
1783
1758
1784
WheelBrakeSlideProtectionActive = inf . ReadBoolean ( ) ;
1759
1785
WheelBrakeSlideProtectionTimerS = inf . ReadInt32 ( ) ;
1786
+ AngleOfAttackRad = inf . ReadSingle ( ) ;
1787
+ DerailClimbDistanceM = inf . ReadSingle ( ) ;
1788
+ DerailPossible = inf . ReadBoolean ( ) ;
1789
+ DerailExpected = inf . ReadBoolean ( ) ;
1790
+ DerailElapsedTimeS = inf . ReadSingle ( ) ;
1760
1791
1761
1792
base . Restore ( inf ) ;
1762
1793
}
0 commit comments