Skip to content

Commit

Permalink
Automatic merge of T1.5.1-376-g885592329 and 12 pull requests
Browse files Browse the repository at this point in the history
- Pull request #570 at de7a14f: Experimental glTF 2.0 support with PBR lighting
- Pull request #732 at 36b4b6d: Improvements for air brakes
- Pull request #751 at 00981a2: Web interface to control cab controls with external hardware
- Pull request #799 at dc03850: Consolidated wind simulation
- Pull request #802 at 4d198e4: Added support for activity location events to the TrackViewer
- Pull request #803 at 7157e08: Various adjustments to steam adhesion
- Pull request #813 at ff454eb: Refactored garbage generators
- Pull request #815 at a5cc165: chore: Add GitHub automatic release notes configuration
- Pull request #818 at 73b637f: Allow independent drive axles for locomotives
- Pull request #820 at 6e7a5b6: delay option for masterkey does not delay switch off
- Pull request #821 at e0fa5a8: Adds suppression of safety valves
- Pull request #822 at 82ef736: battery switch two buttons option in combination with a delay
  • Loading branch information
openrails-bot committed Apr 28, 2023
14 parents 29a066e + 8855923 + de7a14f + 36b4b6d + 00981a2 + dc03850 + 4d198e4 + 7157e08 + ff454eb + a5cc165 + 73b637f + 6e7a5b6 + e0fa5a8 + 82ef736 commit 96b57d9
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
9 changes: 4 additions & 5 deletions Source/Documentation/Manual/physics.rst
Expand Up @@ -2930,11 +2930,10 @@ the following parameters will adjust the behaviour of air brakes:

- ``Engine(DynamicBrakeHasAutoBailOff`` -- Set to 1 if brake cylinders are
emptied while dynamic brake is active
- ``Engine(ORTSDynamicBrakesHasPartialBailOff`` -- Only used if the parameter
above is set to 1. When ORTSDynamicBrakesHasPartialBailOff is set to 0 (default),
air brakes will be fully released when dynamic brake is providing at least the 85%
of the total train brake demand. When set to 1, only part of the air from the brake
cylinder is released, so the total air+dynamic brake force equals the total brake demand.
- ``Engine(ORTSDynamicBrakesHasPartialBailOff`` -- If this parameter is set to 1,
air brakes are released while dynamic brakes satisfy the train brake demand.
If dynamic braking is not sufficient, air brakes will be partially applied
so the combination air+dynamic provides the required brake demand.


Native Open Rails Braking Parameters
Expand Down
Expand Up @@ -362,7 +362,7 @@ public void UpdateTripleValveState(float elapsedClockSeconds)
TripleValveState = ValveState.Release;
else if (TripleValveState != ValveState.Emergency && targetPressurePSI > AutoCylPressurePSI + (TripleValveState != ValveState.Apply ? 2.2f : 0f))
TripleValveState = ValveState.Apply;
else
else if (TripleValveState != ValveState.Emergency)
TripleValveState = ValveState.Lap;
}
else if (valveType == MSTSWagon.BrakeValveType.TripleValve || valveType == MSTSWagon.BrakeValveType.DistributingValve)
Expand Down Expand Up @@ -621,15 +621,15 @@ public override void Update(float elapsedClockSeconds)
}
}
}
if (loco.DynamicBrakeAutoBailOff && loco.DynamicBrakePercent > 0 && Car.MaxBrakeForceN > 0)
if (loco.DynamicBrakePercent > 0 && Car.MaxBrakeForceN > 0)
{
var requiredBrakeForceN = Math.Min(AutoCylPressurePSI / MaxCylPressurePSI, 1) * Car.MaxBrakeForceN;
var localBrakeForceN = loco.DynamicBrakeForceN + Math.Min(CylPressurePSI / MaxCylPressurePSI, 1) * Car.MaxBrakeForceN;
if (localBrakeForceN > requiredBrakeForceN - 0.15f * Car.MaxBrakeForceN)
if (loco.DynamicBrakePartialBailOff)
{
isolateAutoBrake = true;
if (loco.DynamicBrakePartialBailOff)
var requiredBrakeForceN = Math.Min(AutoCylPressurePSI / MaxCylPressurePSI, 1) * Car.MaxBrakeForceN;
var localBrakeForceN = loco.DynamicBrakeForceN + Math.Min(CylPressurePSI / MaxCylPressurePSI, 1) * Car.MaxBrakeForceN;
if (localBrakeForceN > requiredBrakeForceN - 0.15f * Car.MaxBrakeForceN)
{
isolateAutoBrake = true;
var compensatedPressurePSI = Math.Min(Math.Max((requiredBrakeForceN - loco.DynamicBrakeForceN)/Car.MaxBrakeForceN*MaxCylPressurePSI, 0), MaxCylPressurePSI);
if (CylPressurePSI < BrakeLine3PressurePSI)
CylPressurePSI = BrakeLine3PressurePSI;
Expand All @@ -648,10 +648,23 @@ public override void Update(float elapsedClockSeconds)
CylPressurePSI += dp;
}
}
else
}
else if (loco.DynamicBrakeAutoBailOff)
{
if (loco.DynamicBrakeForceCurves == null)
{
isolateAutoBrake = true;
CylPressurePSI = BrakeLine3PressurePSI;
}
else
{
var dynforce = loco.DynamicBrakeForceCurves.Get(1.0f, loco.AbsSpeedMpS);
if ((loco.MaxDynamicBrakeForceN == 0 && dynforce > 0) || dynforce > loco.MaxDynamicBrakeForceN * 0.6)
{
isolateAutoBrake = true;
CylPressurePSI = BrakeLine3PressurePSI;
}
}
}
}
}
Expand Down

0 comments on commit 96b57d9

Please sign in to comment.