16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-20 04:29:18 +02:00

build 170911. right mouse view panning during mouse picking in external view, signal distance calculation fix, AI car braking improvements, cab camera position retains position between view swaps, physics calculations mode switch, consist brake status report in whois event

This commit is contained in:
tmj-fstate
2017-09-12 04:30:51 +02:00
parent 24221163cc
commit d75c9ff14d
19 changed files with 300 additions and 218 deletions

View File

@@ -1331,15 +1331,7 @@ void TDynamicObject::ABuScanObjects( int Direction, double Distance )
// pojazdu
// ScanDir=1 - od strony Coupler0, ScanDir=-1 - od strony Coupler1
auto const initialdirection = Direction; // zapamiętanie kierunku poszukiwań na torze początkowym, względem sprzęgów
/*
TTrackFollower const *firstaxle = (initialdirection > 0 ? &Axle0 : &Axle1); // można by to trzymać w trainset
TTrack const *track = firstaxle->GetTrack(); // tor na którym "stoi" skrajny wózek
// (może być inny niż tor pojazdu)
if( firstaxle->GetDirection() < 0 ) {
// czy oś jest ustawiona w stronę Point1?
Direction = -Direction; // jeśli tak, to kierunek szukania będzie przeciwny
}
*/
TTrack const *track = RaTrackGet();
if( RaDirectionGet() < 0 ) {
// czy oś jest ustawiona w stronę Point1?
@@ -1458,18 +1450,18 @@ void TDynamicObject::ABuScanObjects( int Direction, double Distance )
}
}
// odległość do najbliższego pojazdu w linii prostej
// Ra: jeśli dwa samochody się mijają na odcinku przed zawrotką, to odległość między nimi nie może być liczona w linii prostej!
fTrackBlock = MoverParameters->Couplers[mycoupler].CoupleDist;
if( track->iCategoryFlag & 254 ) {
// jeśli samochód
if( distance > MoverParameters->Dim.L + foundobject->MoverParameters->Dim.L ) {
// przeskanowana odległość większa od długości pojazdów
// else if (ActDist<ScanDist) //dla samochodów musi być uwzględniona
// droga do
// zawrócenia
fTrackBlock = distance; // ta odległość jest wiecej warta
}
// NOTE: the distance we get is approximated as it's measured between active axles, not vehicle ends
fTrackBlock = distance;
if( distance < 100.0 ) {
// at short distances start to calculate range between couplers directly
// odległość do najbliższego pojazdu w linii prostej
fTrackBlock = std::min( fTrackBlock, MoverParameters->Couplers[ mycoupler ].CoupleDist );
}
if( ( false == TestFlag( track->iCategoryFlag, 1 ) )
&& ( distance > 50.0 ) ) {
// Ra: jeśli dwa samochody się mijają na odcinku przed zawrotką, to odległość między nimi nie może być liczona w linii prostej!
// NOTE: the distance is approximated, and additionally less accurate for cars heading in opposite direction
fTrackBlock = distance - ( 0.5 * ( MoverParameters->Dim.L + foundobject->MoverParameters->Dim.L ) );
}
}
else {