16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 14:39:18 +02:00

Merge branch 'tmj-dev' into lua

This commit is contained in:
milek7
2017-09-06 13:45:11 +02:00
9 changed files with 122 additions and 49 deletions

View File

@@ -1128,7 +1128,7 @@ void TDynamicObject::ABuCheckMyTrack()
// Ra: w poniższej funkcji jest problem ze sprzęgami
TDynamicObject *
TDynamicObject::ABuFindObject( int &Foundcoupler, double &Distance, TTrack *Track, int const Direction, int const Mycoupler )
TDynamicObject::ABuFindObject( int &Foundcoupler, double &Distance, TTrack const *Track, int const Direction, int const Mycoupler )
{ // Zwraca wskaźnik najbliższego obiektu znajdującego się
// na torze w określonym kierunku, ale tylko wtedy, kiedy
// obiekty mogą się zderzyć, tzn. nie mijają się.
@@ -1170,7 +1170,15 @@ TDynamicObject::ABuFindObject( int &Foundcoupler, double &Distance, TTrack *Trac
for( auto dynamic : Track->Dynamics ) {
if( dynamic == this ) { continue; } // szukający się nie liczy
/*
if( ( ( dynamic == PrevConnected ) && ( MoverParameters->Couplers[ TMoverParameters::side::front ].CouplingFlag != coupling::faux ) )
|| ( ( dynamic == NextConnected ) && ( MoverParameters->Couplers[ TMoverParameters::side::rear ].CouplingFlag != coupling::faux ) ) ){
// stop-gap check to prevent 'detection' of attached vehicles
// which seems to be a side-effect of inaccurate location calculation in 'simple' mode?
// TODO: investigate actual cause
continue;
}
*/
if( Direction > 0 ) {
// jeśli szukanie w kierunku Point2
objectposition = ( dynamic->RaTranslationGet() ) - myposition; // odległogłość tamtego od szukającego
@@ -1329,16 +1337,23 @@ void TDynamicObject::ABuScanObjects( int Direction, double Distance )
// ScanDir - określa kierunek poszukiwania zależnie od zwrotu prędkości
// pojazdu
// ScanDir=1 - od strony Coupler0, ScanDir=-1 - od strony Coupler1
int initialdirection = Direction; // zapamiętanie kierunku poszukiwań na torze początkowym, względem sprzęgów
TTrackFollower *firstaxle = (initialdirection > 0 ? &Axle0 : &Axle1); // można by to trzymać w trainset
TTrack *track = firstaxle->GetTrack(); // tor na którym "stoi" skrajny wózek
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
}
// (teraz względem
// toru)
*/
TTrack const *track = RaTrackGet();
if( RaDirectionGet() < 0 ) {
// czy oś jest ustawiona w stronę Point1?
Direction = -Direction;
}
// (teraz względem toru)
int const mycoupler = ( initialdirection < 0 ? 1 : 0 ); // numer sprzęgu do podłączenia w obiekcie szukajacym
int foundcoupler { -1 }; // numer sprzęgu w znalezionym obiekcie (znaleziony wypełni)
double distance = 0; // przeskanowana odleglość; odległość do zawalidrogi
@@ -1348,9 +1363,9 @@ void TDynamicObject::ABuScanObjects( int Direction, double Distance )
// jeśli nie ma na tym samym, szukamy po okolicy szukanie najblizszego toru z jakims obiektem
// praktycznie przeklejone z TraceRoute()...
if (Direction >= 0) // uwzględniamy kawalek przeanalizowanego wcześniej toru
distance = track->Length() - firstaxle->GetTranslation(); // odległość osi od Point2 toru
distance = track->Length() - RaTranslationGet(); // odległość osi od Point2 toru
else
distance = firstaxle->GetTranslation(); // odległość osi od Point1 toru
distance = RaTranslationGet(); // odległość osi od Point1 toru
while (distance < Distance) {
if (Direction > 0) {
@@ -1456,6 +1471,14 @@ void TDynamicObject::ABuScanObjects( int Direction, double Distance )
// nic nie znalezione, to nie ma przeszkód
fTrackBlock = 10000.0;
}
#ifdef EU07_DEBUG_COLLISIONS
// debug collider scans
if( ( PrevConnected != nullptr )
&& ( PrevConnected == NextConnected ) ) {
ErrorLog( "Bad coupling: " + asName + " has the same vehicle detected attached to both couplers" );
}
#endif
}
//----------ABu: koniec skanowania pojazdow