From 3401f3e176b212667a425218d3c3c2cedc835a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=B3lik=20Uszasty?= Date: Sat, 1 May 2021 23:28:48 +0200 Subject: [PATCH] Small fix for Driver's calculation of med braking --- Driver.cpp | 4 ++-- Driver.h | 1 + DynObj.cpp | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Driver.cpp b/Driver.cpp index be287014..f02a864f 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -3105,8 +3105,8 @@ bool TController::IncBrakeEIM() case 0: { if( mvOccupied->MED_amax != 9.81 ) { auto const maxpos{mvOccupied->EIMCtrlEmergency ? 0.9 : 1.0 }; - auto const brakelimit{ -2.2 * AccDesired / mvOccupied->MED_amax - 1.0}; //additional limit when hinted is too low - auto const brakehinted{ -1.0 * mvOccupied->AIHintLocalBrakeAccFactor * AccDesired / mvOccupied->MED_amax }; //preffered by AI + auto const brakelimit{ -2.2 * AccDesired / fMedAmax - 1.0}; //additional limit when hinted is too low + auto const brakehinted{ -1.0 * mvOccupied->AIHintLocalBrakeAccFactor * AccDesired / fMedAmax }; //preffered by AI auto const brakeposition{ maxpos * clamp(std::max(brakelimit, brakehinted), 0.0, 1.0)}; OK = ( brakeposition != mvOccupied->LocalBrakePosA ); mvOccupied->LocalBrakePosA = brakeposition; diff --git a/Driver.h b/Driver.h index cba21eec..6ab2c61d 100644 --- a/Driver.h +++ b/Driver.h @@ -354,6 +354,7 @@ public: int UniversalBrakeButtons = 0.0; // flag of which universal buttons need to be pressed int DizelPercentage = 0; // oczekiwane procenty jazdy/hamowania szynobusem int DizelPercentage_Speed = 0; // oczekiwane procenty jazdy/hamowania szynobusem w związku z osiąganiem VelDesired + double fMedAmax = 0.8; //maximum decceleration when using ep/med brake private: bool Psyche = false; int HelperState = 0; //stan pomocnika maszynisty diff --git a/DynObj.cpp b/DynObj.cpp index ca094e5c..1dff2eab 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -3114,6 +3114,7 @@ bool TDynamicObject::Update(double dt, double dt1) RapidMult = MoverParameters->RapidMult; auto const amax = RapidMult * std::min(FmaxPN / masamax, MoverParameters->MED_amax); + Mechanik->fMedAmax = amax; auto doorisopen { ( false == MoverParameters->Doors.instances[ side::left ].is_closed ) || ( false == MoverParameters->Doors.instances[ side::right ].is_closed )