@@ -411,6 +411,8 @@ public void Load()
411
411
float LoadEmptyMaxBrakeForceN ;
412
412
float LoadEmptyMaxHandbrakeForceN ;
413
413
float LoadEmptyCentreOfGravityM_Y ;
414
+ float LoadEmptyRelayValveRatio ;
415
+ float LoadEmptyInshotPSI ;
414
416
415
417
float LoadFullMassKg ;
416
418
float LoadFullORTSDavis_A ;
@@ -421,6 +423,8 @@ public void Load()
421
423
float LoadFullMaxBrakeForceN ;
422
424
float LoadFullMaxHandbrakeForceN ;
423
425
float LoadFullCentreOfGravityM_Y ;
426
+ float LoadFullRelayValveRatio ;
427
+ float LoadFullInshotPSI ;
424
428
425
429
426
430
/// <summary>
@@ -787,6 +791,24 @@ public virtual void LoadFromWagFile(string wagFilePath)
787
791
LoadEmptyCentreOfGravityM_Y = CentreOfGravityM . Y ;
788
792
}
789
793
794
+ if ( FreightAnimations . EmptyRelayValveRatio > 0 )
795
+ {
796
+ LoadEmptyRelayValveRatio = FreightAnimations . EmptyRelayValveRatio ;
797
+ }
798
+ else if ( BrakeSystem is AirSinglePipe brakes )
799
+ {
800
+ LoadEmptyRelayValveRatio = brakes . RelayValveRatio ;
801
+ }
802
+
803
+ if ( FreightAnimations . EmptyInshotPSI != 0 )
804
+ {
805
+ LoadEmptyInshotPSI = FreightAnimations . EmptyInshotPSI ;
806
+ }
807
+ else if ( BrakeSystem is AirSinglePipe brakes )
808
+ {
809
+ LoadEmptyInshotPSI = brakes . RelayValveInshotPSI ;
810
+ }
811
+
790
812
// Read (initialise) Static load ones if a static load
791
813
// Test each value to make sure that it has been defined in the WAG file, if not default to Root WAG file value
792
814
if ( FreightAnimations . FullPhysicsStaticOne != null )
@@ -866,6 +888,24 @@ public virtual void LoadFromWagFile(string wagFilePath)
866
888
{
867
889
LoadFullCentreOfGravityM_Y = CentreOfGravityM . Y ;
868
890
}
891
+
892
+ if ( FreightAnimations . FullPhysicsStaticOne . FullStaticRelayValveRatio > 0 )
893
+ {
894
+ LoadFullRelayValveRatio = FreightAnimations . FullPhysicsStaticOne . FullStaticRelayValveRatio ;
895
+ }
896
+ else if ( BrakeSystem is AirSinglePipe brakes )
897
+ {
898
+ LoadFullRelayValveRatio = brakes . RelayValveRatio ;
899
+ }
900
+
901
+ if ( FreightAnimations . FullPhysicsStaticOne . FullStaticInshotPSI > 0 )
902
+ {
903
+ LoadFullInshotPSI = FreightAnimations . FullPhysicsStaticOne . FullStaticInshotPSI ;
904
+ }
905
+ else if ( BrakeSystem is AirSinglePipe brakes )
906
+ {
907
+ LoadFullInshotPSI = brakes . RelayValveInshotPSI ;
908
+ }
869
909
}
870
910
871
911
// Read (initialise) Continuous load ones if a continuous load
@@ -956,6 +996,24 @@ public virtual void LoadFromWagFile(string wagFilePath)
956
996
{
957
997
LoadFullCentreOfGravityM_Y = CentreOfGravityM . Y ;
958
998
}
999
+
1000
+ if ( FreightAnimations . FullPhysicsContinuousOne . FullRelayValveRatio > 0 )
1001
+ {
1002
+ LoadFullRelayValveRatio = FreightAnimations . FullPhysicsContinuousOne . FullRelayValveRatio ;
1003
+ }
1004
+ else if ( BrakeSystem is AirSinglePipe brakes )
1005
+ {
1006
+ LoadFullRelayValveRatio = brakes . RelayValveRatio ;
1007
+ }
1008
+
1009
+ if ( FreightAnimations . FullPhysicsContinuousOne . FullInshotPSI != 0 )
1010
+ {
1011
+ LoadFullInshotPSI = FreightAnimations . FullPhysicsContinuousOne . FullInshotPSI ;
1012
+ }
1013
+ else if ( BrakeSystem is AirSinglePipe brakes )
1014
+ {
1015
+ LoadFullInshotPSI = brakes . RelayValveInshotPSI ;
1016
+ }
959
1017
}
960
1018
961
1019
if ( ! FreightAnimations . MSTSFreightAnimEnabled ) FreightShapeFileName = null ;
@@ -978,6 +1036,11 @@ public virtual void LoadFromWagFile(string wagFilePath)
978
1036
// Update brake parameters
979
1037
MaxBrakeForceN = LoadFullMaxBrakeForceN ;
980
1038
MaxHandbrakeForceN = LoadFullMaxHandbrakeForceN ;
1039
+ if ( BrakeSystem is AirSinglePipe brakes )
1040
+ {
1041
+ brakes . RelayValveRatio = LoadFullRelayValveRatio ;
1042
+ brakes . RelayValveInshotPSI = LoadFullInshotPSI ;
1043
+ }
981
1044
982
1045
// Update friction related parameters
983
1046
DavisAN = LoadFullORTSDavis_A ;
@@ -1002,6 +1065,12 @@ public virtual void LoadFromWagFile(string wagFilePath)
1002
1065
// Update brake parameters
1003
1066
MaxBrakeForceN = ( ( LoadFullMaxBrakeForceN - LoadEmptyMaxBrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxBrakeForceN ;
1004
1067
MaxHandbrakeForceN = ( ( LoadFullMaxHandbrakeForceN - LoadEmptyMaxHandbrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxHandbrakeForceN ;
1068
+ // Not sensible to vary the relay valve ratio continouously; instead, it changes to loaded if more than 25% cargo is present
1069
+ if ( BrakeSystem is AirSinglePipe brakes )
1070
+ {
1071
+ brakes . RelayValveRatio = TempMassDiffRatio > 0.25f ? LoadFullRelayValveRatio : LoadEmptyRelayValveRatio ;
1072
+ brakes . RelayValveInshotPSI = TempMassDiffRatio > 0.25f ? LoadFullInshotPSI : LoadEmptyInshotPSI ;
1073
+ }
1005
1074
1006
1075
// Update friction related parameters
1007
1076
DavisAN = ( ( LoadFullORTSDavis_A - LoadEmptyORTSDavis_A ) * TempMassDiffRatio ) + LoadEmptyORTSDavis_A ;
@@ -1030,6 +1099,11 @@ public virtual void LoadFromWagFile(string wagFilePath)
1030
1099
// Update brake physics
1031
1100
MaxBrakeForceN = LoadEmptyMaxBrakeForceN ;
1032
1101
MaxHandbrakeForceN = LoadEmptyMaxHandbrakeForceN ;
1102
+ if ( BrakeSystem is AirSinglePipe brakes )
1103
+ {
1104
+ brakes . RelayValveRatio = LoadEmptyRelayValveRatio ;
1105
+ brakes . RelayValveInshotPSI = LoadEmptyInshotPSI ;
1106
+ }
1033
1107
1034
1108
// Update friction related parameters
1035
1109
DavisAN = LoadEmptyORTSDavis_A ;
@@ -1713,6 +1787,8 @@ public virtual void Copy(MSTSWagon copy)
1713
1787
LoadEmptyORTSDavis_C = copy . LoadEmptyORTSDavis_C ;
1714
1788
LoadEmptyDavisDragConstant = copy . LoadEmptyDavisDragConstant ;
1715
1789
LoadEmptyWagonFrontalAreaM2 = copy . LoadEmptyWagonFrontalAreaM2 ;
1790
+ LoadEmptyRelayValveRatio = copy . LoadEmptyRelayValveRatio ;
1791
+ LoadEmptyInshotPSI = copy . LoadEmptyInshotPSI ;
1716
1792
LoadFullMassKg = copy . LoadFullMassKg ;
1717
1793
LoadFullCentreOfGravityM_Y = copy . LoadFullCentreOfGravityM_Y ;
1718
1794
LoadFullMaxBrakeForceN = copy . LoadFullMaxBrakeForceN ;
@@ -1722,6 +1798,8 @@ public virtual void Copy(MSTSWagon copy)
1722
1798
LoadFullORTSDavis_C = copy . LoadFullORTSDavis_C ;
1723
1799
LoadFullDavisDragConstant = copy . LoadFullDavisDragConstant ;
1724
1800
LoadFullWagonFrontalAreaM2 = copy . LoadFullWagonFrontalAreaM2 ;
1801
+ LoadFullRelayValveRatio = copy . LoadFullRelayValveRatio ;
1802
+ LoadFullInshotPSI = copy . LoadFullInshotPSI ;
1725
1803
1726
1804
if ( copy . IntakePointList != null )
1727
1805
{
@@ -2125,6 +2203,12 @@ public override void Update(float elapsedClockSeconds)
2125
2203
// Update brake parameters
2126
2204
MaxBrakeForceN = ( ( LoadFullMaxBrakeForceN - LoadEmptyMaxBrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxBrakeForceN ;
2127
2205
MaxHandbrakeForceN = ( ( LoadFullMaxHandbrakeForceN - LoadEmptyMaxHandbrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxHandbrakeForceN ;
2206
+ // Not sensible to vary the relay valve ratio continouously; instead, it changes to loaded if more than 25% cargo is present
2207
+ if ( BrakeSystem is AirSinglePipe brakes )
2208
+ {
2209
+ brakes . RelayValveRatio = TempMassDiffRatio > 0.25f ? LoadFullRelayValveRatio : LoadEmptyRelayValveRatio ;
2210
+ brakes . RelayValveInshotPSI = TempMassDiffRatio > 0.25f ? LoadFullInshotPSI : LoadEmptyInshotPSI ;
2211
+ }
2128
2212
// Update friction related parameters
2129
2213
DavisAN = ( ( LoadFullORTSDavis_A - LoadEmptyORTSDavis_A ) * TempMassDiffRatio ) + LoadEmptyORTSDavis_A ;
2130
2214
DavisBNSpM = ( ( LoadFullORTSDavis_B - LoadEmptyORTSDavis_B ) * TempMassDiffRatio ) + LoadEmptyORTSDavis_B ;
@@ -2232,6 +2316,12 @@ private void UpdateLocomotiveLoadPhysics()
2232
2316
// Update brake parameters
2233
2317
MaxBrakeForceN = ( ( LoadFullMaxBrakeForceN - LoadEmptyMaxBrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxBrakeForceN ;
2234
2318
MaxHandbrakeForceN = ( ( LoadFullMaxHandbrakeForceN - LoadEmptyMaxHandbrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxHandbrakeForceN ;
2319
+ // Not sensible to vary the relay valve ratio continouously; instead, it changes to loaded if more than 25% cargo is present
2320
+ if ( BrakeSystem is AirSinglePipe brakes )
2321
+ {
2322
+ brakes . RelayValveRatio = TempMassDiffRatio > 0.25f ? LoadFullRelayValveRatio : LoadEmptyRelayValveRatio ;
2323
+ brakes . RelayValveInshotPSI = TempMassDiffRatio > 0.25f ? LoadFullInshotPSI : LoadEmptyInshotPSI ;
2324
+ }
2235
2325
// Update friction related parameters
2236
2326
DavisAN = ( ( LoadFullORTSDavis_A - LoadEmptyORTSDavis_A ) * TempMassDiffRatio ) + LoadEmptyORTSDavis_A ;
2237
2327
DavisBNSpM = ( ( LoadFullORTSDavis_B - LoadEmptyORTSDavis_B ) * TempMassDiffRatio ) + LoadEmptyORTSDavis_B ;
@@ -2278,6 +2368,12 @@ private void UpdateLocomotiveLoadPhysics()
2278
2368
// Update brake parameters
2279
2369
MaxBrakeForceN = ( ( LoadFullMaxBrakeForceN - LoadEmptyMaxBrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxBrakeForceN ;
2280
2370
MaxHandbrakeForceN = ( ( LoadFullMaxHandbrakeForceN - LoadEmptyMaxHandbrakeForceN ) * TempMassDiffRatio ) + LoadEmptyMaxHandbrakeForceN ;
2371
+ // Not sensible to vary the relay valve ratio continouously; instead, it changes to loaded if more than 25% cargo is present
2372
+ if ( BrakeSystem is AirSinglePipe brakes )
2373
+ {
2374
+ brakes . RelayValveRatio = TempMassDiffRatio > 0.25f ? LoadFullRelayValveRatio : LoadEmptyRelayValveRatio ;
2375
+ brakes . RelayValveInshotPSI = TempMassDiffRatio > 0.25f ? LoadFullInshotPSI : LoadEmptyInshotPSI ;
2376
+ }
2281
2377
// Update friction related parameters
2282
2378
DavisAN = ( ( LoadFullORTSDavis_A - LoadEmptyORTSDavis_A ) * TempMassDiffRatio ) + LoadEmptyORTSDavis_A ;
2283
2379
DavisBNSpM = ( ( LoadFullORTSDavis_B - LoadEmptyORTSDavis_B ) * TempMassDiffRatio ) + LoadEmptyORTSDavis_B ;
@@ -3220,6 +3316,12 @@ private void UpdateTenderLoad()
3220
3316
// Update brake parameters
3221
3317
MaxBrakeForceN = ( ( LoadFullMaxBrakeForceN - LoadEmptyMaxBrakeForceN ) * TempTenderMassDiffRatio ) + LoadEmptyMaxBrakeForceN ;
3222
3318
MaxHandbrakeForceN = ( ( LoadFullMaxHandbrakeForceN - LoadEmptyMaxHandbrakeForceN ) * TempTenderMassDiffRatio ) + LoadEmptyMaxHandbrakeForceN ;
3319
+ // Not sensible to vary the relay valve ratio continouously; instead, it changes to loaded if more than 25% cargo is present
3320
+ if ( BrakeSystem is AirSinglePipe brakes )
3321
+ {
3322
+ brakes . RelayValveRatio = TempTenderMassDiffRatio > 0.25f ? LoadFullRelayValveRatio : LoadEmptyRelayValveRatio ;
3323
+ brakes . RelayValveInshotPSI = TempTenderMassDiffRatio > 0.25f ? LoadFullInshotPSI : LoadEmptyInshotPSI ;
3324
+ }
3223
3325
// Update friction related parameters
3224
3326
DavisAN = ( ( LoadFullORTSDavis_A - LoadEmptyORTSDavis_A ) * TempTenderMassDiffRatio ) + LoadEmptyORTSDavis_A ;
3225
3327
DavisBNSpM = ( ( LoadFullORTSDavis_B - LoadEmptyORTSDavis_B ) * TempTenderMassDiffRatio ) + LoadEmptyORTSDavis_B ;
@@ -3253,6 +3355,12 @@ private void UpdateTenderLoad()
3253
3355
// Update brake parameters
3254
3356
MaxBrakeForceN = ( ( LoadFullMaxBrakeForceN - LoadEmptyMaxBrakeForceN ) * TempTenderMassDiffRatio ) + LoadEmptyMaxBrakeForceN ;
3255
3357
MaxHandbrakeForceN = ( ( LoadFullMaxHandbrakeForceN - LoadEmptyMaxHandbrakeForceN ) * TempTenderMassDiffRatio ) + LoadEmptyMaxHandbrakeForceN ;
3358
+ // Not sensible to vary the relay valve ratio continouously; instead, it changes to loaded if more than 25% cargo is present
3359
+ if ( BrakeSystem is AirSinglePipe brakes )
3360
+ {
3361
+ brakes . RelayValveRatio = TempTenderMassDiffRatio > 0.25f ? LoadFullRelayValveRatio : LoadEmptyRelayValveRatio ;
3362
+ brakes . RelayValveInshotPSI = TempTenderMassDiffRatio > 0.25f ? LoadFullInshotPSI : LoadEmptyInshotPSI ;
3363
+ }
3256
3364
// Update friction related parameters
3257
3365
DavisAN = ( ( LoadFullORTSDavis_A - LoadEmptyORTSDavis_A ) * TempTenderMassDiffRatio ) + LoadEmptyORTSDavis_A ;
3258
3366
DavisBNSpM = ( ( LoadFullORTSDavis_B - LoadEmptyORTSDavis_B ) * TempTenderMassDiffRatio ) + LoadEmptyORTSDavis_B ;
0 commit comments