Definition of stopping distance before PassengerStopPoint

This commit is contained in:
Królik Uszasty
2018-06-18 22:16:56 +02:00
committed by tmj-fstate
parent 66184922c1
commit 6b705d38dd
2 changed files with 21 additions and 0 deletions

View File

@@ -858,6 +858,26 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
}
} // koniec obsługi przelotu na W4
else {
if ( !sSpeedTable[i].bMoved )
{
auto L = 0.0;
auto Par1 = sSpeedTable[i].evEvent->ValueGet(1);
auto Par2 = sSpeedTable[i].evEvent->ValueGet(2);
if ((Par2 > 0) || (fLength < -Par2)) { //użyj tego W4
if (Par1 < 0) { //środek
L = -Par1 - fLength * 0.5 - 10;
}
else {
L = Par1;
}
L = std::max(0.0, std::min(L, abs(Par2) - 10 - fLength));
sSpeedTable[i].UpdateDistance(L);
sSpeedTable[i].bMoved = true;
}
else {
sSpeedTable[i].iFlags = 0;
}
}
// zatrzymanie na W4
isatpassengerstop = (
// Ra 2F1I: odległość plus długość pociągu musi być mniejsza od długości

View File

@@ -131,6 +131,7 @@ class TSpeedPos
// zwrotnicy,32-minięty,64=koniec,128=łuk
// 0x100=event,0x200=manewrowa,0x400=przystanek,0x800=SBL,0x1000=wysłana komenda,0x2000=W5
// 0x4000=semafor,0x10000=zatkanie
bool bMoved{ false }; // czy przesunięty (dotyczy punktu zatrzymania w peronie)
Math3D::vector3 vPos; // współrzędne XYZ do liczenia odległości
struct
{