mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 05:49:19 +02:00
Merge branch 'tmj-dev'
This commit is contained in:
23
Driver.cpp
23
Driver.cpp
@@ -2688,7 +2688,15 @@ bool TController::IncSpeed()
|
|||||||
if (!mvControlling->FuseFlag)
|
if (!mvControlling->FuseFlag)
|
||||||
if (Ready || (iDrivigFlags & movePress) || (mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
if (Ready || (iDrivigFlags & movePress) || (mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
||||||
{
|
{
|
||||||
OK = mvControlling->IncMainCtrl(1);
|
OK = mvControlling->IncMainCtrl(std::max(1,mvOccupied->MainCtrlPosNo/10));
|
||||||
|
//tutaj jeszcze powinien być tempomat
|
||||||
|
mvControlling->IncScndCtrl(1);
|
||||||
|
double SpeedCntrl = VelDesired;
|
||||||
|
if (fProximityDist < 50)
|
||||||
|
{
|
||||||
|
SpeedCntrl = std::min(SpeedCntrl, VelNext);
|
||||||
|
}
|
||||||
|
mvControlling->RunCommand("SpeedCntrl", VelDesired, mvControlling->CabNo);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WheelsDriven:
|
case WheelsDriven:
|
||||||
@@ -2741,11 +2749,22 @@ bool TController::DecSpeed(bool force)
|
|||||||
break;
|
break;
|
||||||
case Dumb:
|
case Dumb:
|
||||||
case DieselElectric:
|
case DieselElectric:
|
||||||
case ElectricInductionMotor:
|
|
||||||
OK = mvControlling->DecScndCtrl(2);
|
OK = mvControlling->DecScndCtrl(2);
|
||||||
if (!OK)
|
if (!OK)
|
||||||
OK = mvControlling->DecMainCtrl(2 + (mvControlling->MainCtrlPos / 2));
|
OK = mvControlling->DecMainCtrl(2 + (mvControlling->MainCtrlPos / 2));
|
||||||
break;
|
break;
|
||||||
|
case ElectricInductionMotor:
|
||||||
|
OK = mvControlling->DecMainCtrl(1);
|
||||||
|
if ((mvControlling->ScndCtrlPosNo > 0)&&(mvControlling->Mains)) //jeżeli tempomat
|
||||||
|
{
|
||||||
|
mvControlling->IncScndCtrl(1);
|
||||||
|
mvControlling->RunCommand("SpeedCntrl", VelDesired, mvControlling->CabNo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mvControlling->DecScndCtrl(2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case WheelsDriven:
|
case WheelsDriven:
|
||||||
if (!mvControlling->CabNo)
|
if (!mvControlling->CabNo)
|
||||||
mvControlling->CabActivisation();
|
mvControlling->CabActivisation();
|
||||||
|
|||||||
123
DynObj.cpp
123
DynObj.cpp
@@ -1635,8 +1635,7 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
double fDist, // dystans względem punktu 1
|
double fDist, // dystans względem punktu 1
|
||||||
std::string DriverType, // typ obsady
|
std::string DriverType, // typ obsady
|
||||||
double fVel, // prędkość początkowa
|
double fVel, // prędkość początkowa
|
||||||
std::string TrainName, // nazwa składu, np. "PE2307" albo Vmax, jeśli pliku
|
std::string TrainName, // nazwa składu, np. "PE2307" albo Vmax, jeśli pliku nie ma a są cyfry
|
||||||
// nie ma a są cyfry
|
|
||||||
float Load, // ilość ładunku
|
float Load, // ilość ładunku
|
||||||
std::string LoadType, // nazwa ładunku
|
std::string LoadType, // nazwa ładunku
|
||||||
bool Reversed, // true, jeśli ma stać odwrotnie w składzie
|
bool Reversed, // true, jeśli ma stać odwrotnie w składzie
|
||||||
@@ -1652,18 +1651,18 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
DriverType = "1"; // sterujący kabiną +1
|
DriverType = "1"; // sterujący kabiną +1
|
||||||
else if (DriverType == "reardriver")
|
else if (DriverType == "reardriver")
|
||||||
DriverType = "2"; // sterujący kabiną -1
|
DriverType = "2"; // sterujący kabiną -1
|
||||||
// else if (DriverType=="connected") DriverType="c"; //tego trzeba się pozbyć
|
|
||||||
// na rzecz
|
|
||||||
// ukrotnienia
|
|
||||||
else if (DriverType == "passenger")
|
else if (DriverType == "passenger")
|
||||||
DriverType = "p"; // to do przemyślenia
|
DriverType = "p"; // to do przemyślenia
|
||||||
else if (DriverType == "nobody")
|
else if (DriverType == "nobody")
|
||||||
DriverType = ""; // nikt nie siedzi
|
DriverType = ""; // nikt nie siedzi
|
||||||
|
|
||||||
int Cab = 0; // numer kabiny z obsadą (nie można zająć obu)
|
int Cab = 0; // numer kabiny z obsadą (nie można zająć obu)
|
||||||
if (DriverType == "1") // od przodu składu
|
if (DriverType == "1") // od przodu składu
|
||||||
Cab = 1; // iDirection?1:-1; //iDirection=1 gdy normalnie, =0 odwrotnie
|
Cab = 1; // iDirection?1:-1; //iDirection=1 gdy normalnie, =0 odwrotnie
|
||||||
else if (DriverType == "2") // od tyłu składu
|
else if (DriverType == "2") // od tyłu składu
|
||||||
Cab = -1; // iDirection?-1:1;
|
Cab = -1; // iDirection?-1:1;
|
||||||
|
/*
|
||||||
|
// NOTE: leave passenger in the middle section, this is most likely to be 'passenger' section in MU trains
|
||||||
else if (DriverType == "p")
|
else if (DriverType == "p")
|
||||||
{
|
{
|
||||||
if (Random(6) < 3)
|
if (Random(6) < 3)
|
||||||
@@ -1671,20 +1670,10 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
else
|
else
|
||||||
Cab = -1; // losowy przydział kabiny
|
Cab = -1; // losowy przydział kabiny
|
||||||
}
|
}
|
||||||
/* to nie ma uzasadnienia
|
*/
|
||||||
else
|
|
||||||
{//obsada nie rozpoznana
|
|
||||||
Cab=0; //McZapkie-010303: w przyszlosci dac tez pomocnika, palacza,
|
|
||||||
konduktora itp.
|
|
||||||
Error("Unknown DriverType description: "+DriverType);
|
|
||||||
DriverType="nobody";
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// utworzenie parametrów fizyki
|
// utworzenie parametrów fizyki
|
||||||
MoverParameters =
|
MoverParameters = new TMoverParameters(iDirection ? fVel : -fVel, Type_Name, asName, Load, LoadType, Cab);
|
||||||
new TMoverParameters(iDirection ? fVel : -fVel, Type_Name, asName, Load, LoadType, Cab);
|
|
||||||
iLights = MoverParameters->iLights; // wskaźnik na stan własnych świateł
|
iLights = MoverParameters->iLights; // wskaźnik na stan własnych świateł
|
||||||
// (zmienimy dla rozrządczych EZT)
|
|
||||||
// McZapkie: TypeName musi byc nazwą CHK/MMD pojazdu
|
// McZapkie: TypeName musi byc nazwą CHK/MMD pojazdu
|
||||||
if (!MoverParameters->LoadFIZ(asBaseDir))
|
if (!MoverParameters->LoadFIZ(asBaseDir))
|
||||||
{ // jak wczytanie CHK się nie uda, to błąd
|
{ // jak wczytanie CHK się nie uda, to błąd
|
||||||
@@ -1878,43 +1867,9 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
// wygenerować
|
// wygenerować
|
||||||
fDist = -fDist; // to traktujemy, jakby przesunięcie było w drugą stronę
|
fDist = -fDist; // to traktujemy, jakby przesunięcie było w drugą stronę
|
||||||
}
|
}
|
||||||
// w wagonie tez niech jedzie
|
|
||||||
// if (MoverParameters->MainCtrlPosNo>0 &&
|
create_controller( DriverType, !TrainName.empty() );
|
||||||
// if (MoverParameters->CabNo!=0)
|
|
||||||
if (DriverType != "")
|
|
||||||
{ // McZapkie-040602: jeśli coś siedzi w pojeździe
|
|
||||||
if (Name == Global::asHumanCtrlVehicle) // jeśli pojazd wybrany do prowadzenia
|
|
||||||
{
|
|
||||||
if ( MoverParameters->EngineType != Dumb)
|
|
||||||
Controller = Humandriver; // wsadzamy tam sterującego
|
|
||||||
else // w przeciwnym razie trzeba włączyć pokazywanie kabiny
|
|
||||||
bDisplayCab = true;
|
|
||||||
}
|
|
||||||
// McZapkie-151102: rozkład jazdy czytany z pliku *.txt z katalogu w którym
|
|
||||||
// jest sceneria
|
|
||||||
if (DriverType == "1" || DriverType == "2")
|
|
||||||
{ // McZapkie-110303: mechanik i rozklad tylko gdy jest obsada
|
|
||||||
// MoverParameters->ActiveCab=MoverParameters->CabNo; //ustalenie aktywnej
|
|
||||||
// kabiny
|
|
||||||
// (rozrząd)
|
|
||||||
Mechanik = new TController(Controller, this, Aggressive);
|
|
||||||
if (TrainName.empty()) // jeśli nie w składzie
|
|
||||||
{
|
|
||||||
Mechanik->DirectionInitial(); // załączenie rozrządu (wirtualne kabiny) itd.
|
|
||||||
Mechanik->PutCommand(
|
|
||||||
"Timetable:", iDirection ? -fVel : fVel, 0,
|
|
||||||
NULL); // tryb pociągowy z ustaloną prędkością (względem sprzęgów)
|
|
||||||
}
|
|
||||||
// if (TrainName!="none")
|
|
||||||
// Mechanik->PutCommand("Timetable:"+TrainName,fVel,0,NULL);
|
|
||||||
}
|
|
||||||
else if (DriverType == "p")
|
|
||||||
{ // obserwator w charakterze pasażera
|
|
||||||
// Ra: to jest niebezpieczne, bo w razie co będzie pomagał hamulcem
|
|
||||||
// bezpieczeństwa
|
|
||||||
Mechanik = new TController(Controller, this, Easyman, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// McZapkie-250202
|
// McZapkie-250202
|
||||||
iAxles = (MaxAxles < MoverParameters->NAxles) ? MaxAxles : MoverParameters->NAxles; // ilość osi
|
iAxles = (MaxAxles < MoverParameters->NAxles) ? MaxAxles : MoverParameters->NAxles; // ilość osi
|
||||||
// wczytywanie z pliku nazwatypu.mmd, w tym model
|
// wczytywanie z pliku nazwatypu.mmd, w tym model
|
||||||
@@ -2086,9 +2041,6 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
loc.Y = vPosition.z;
|
loc.Y = vPosition.z;
|
||||||
loc.Z = vPosition.y;
|
loc.Z = vPosition.y;
|
||||||
MoverParameters->Loc = loc; // normalnie przesuwa ComputeMovement() w Update()
|
MoverParameters->Loc = loc; // normalnie przesuwa ComputeMovement() w Update()
|
||||||
// pOldPos4=Axle1.pPosition; //Ra: nie używane
|
|
||||||
// pOldPos1=Axle0.pPosition;
|
|
||||||
// ActualTrack= GetTrack(); //McZapkie-030303
|
|
||||||
// ABuWozki 060504
|
// ABuWozki 060504
|
||||||
if (mdModel) // jeśli ma w czym szukać
|
if (mdModel) // jeśli ma w czym szukać
|
||||||
{
|
{
|
||||||
@@ -2103,17 +2055,54 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
if (smBogie[1])
|
if (smBogie[1])
|
||||||
smBogie[1]->WillBeAnimated();
|
smBogie[1]->WillBeAnimated();
|
||||||
}
|
}
|
||||||
// ABu: zainicjowanie zmiennej, zeby nic sie nie ruszylo
|
// ABu: zainicjowanie zmiennej, zeby nic sie nie ruszylo w pierwszej klatce,
|
||||||
// w pierwszej klatce, potem juz liczona prawidlowa wartosc masy
|
// potem juz liczona prawidlowa wartosc masy
|
||||||
MoverParameters->ComputeConstans();
|
MoverParameters->ComputeConstans();
|
||||||
/*Ra: to nie działa - Event0 musi być wykonywany ciągle
|
// wektor podłogi dla wagonów, przesuwa ładunek
|
||||||
if (fVel==0.0) //jeśli stoi
|
vFloor = vector3(0, 0, MoverParameters->Floor);
|
||||||
if (MoverParameters->CabNo!=0) //i ma kogoś w kabinie
|
// długość większa od zera oznacza OK; 2mm docisku?
|
||||||
if (Track->Event0) //a jest w tym torze event od stania
|
return MoverParameters->Dim.L;
|
||||||
RaAxleEvent(Track->Event0); //dodanie eventu stania do kolejki
|
}
|
||||||
*/
|
|
||||||
vFloor = vector3(0, 0, MoverParameters->Floor); // wektor podłogi dla wagonów, przesuwa ładunek
|
void
|
||||||
return MoverParameters->Dim.L; // długość większa od zera oznacza OK; 2mm docisku?
|
TDynamicObject::create_controller( std::string const Type, bool const Trainset ) {
|
||||||
|
|
||||||
|
if( Type == "" ) { return; }
|
||||||
|
|
||||||
|
if( asName == Global::asHumanCtrlVehicle ) {
|
||||||
|
// jeśli pojazd wybrany do prowadzenia
|
||||||
|
if( MoverParameters->EngineType != Dumb ) {
|
||||||
|
// wsadzamy tam sterującego
|
||||||
|
Controller = Humandriver;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// w przeciwnym razie trzeba włączyć pokazywanie kabiny
|
||||||
|
bDisplayCab = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// McZapkie-151102: rozkład jazdy czytany z pliku *.txt z katalogu w którym jest sceneria
|
||||||
|
if( ( Type == "1" )
|
||||||
|
|| ( Type == "2" ) ) {
|
||||||
|
// McZapkie-110303: mechanik i rozklad tylko gdy jest obsada
|
||||||
|
Mechanik = new TController( Controller, this, Aggressive );
|
||||||
|
|
||||||
|
if( false == Trainset ) {
|
||||||
|
// jeśli nie w składzie
|
||||||
|
// załączenie rozrządu (wirtualne kabiny) itd.
|
||||||
|
Mechanik->DirectionInitial();
|
||||||
|
// tryb pociągowy z ustaloną prędkością (względem sprzęgów)
|
||||||
|
Mechanik->PutCommand(
|
||||||
|
"Timetable:",
|
||||||
|
MoverParameters->V * 3.6 * ( iDirection ? -1.0 : 1.0 ),
|
||||||
|
0,
|
||||||
|
nullptr );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( Type == "p" ) {
|
||||||
|
// obserwator w charakterze pasażera
|
||||||
|
// Ra: to jest niebezpieczne, bo w razie co będzie pomagał hamulcem bezpieczeństwa
|
||||||
|
Mechanik = new TController( Controller, this, Easyman, false );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDynamicObject::FastMove(double fDistance)
|
void TDynamicObject::FastMove(double fDistance)
|
||||||
|
|||||||
8
DynObj.h
8
DynObj.h
@@ -400,17 +400,17 @@ private:
|
|||||||
int iCabs; // maski bitowe modeli kabin
|
int iCabs; // maski bitowe modeli kabin
|
||||||
TTrack *MyTrack; // McZapkie-030303: tor na ktorym stoi, ABu
|
TTrack *MyTrack; // McZapkie-030303: tor na ktorym stoi, ABu
|
||||||
std::string asBaseDir;
|
std::string asBaseDir;
|
||||||
int iOverheadMask; // maska przydzielana przez AI pojazdom posiadającym pantograf, aby wymuszały
|
int iOverheadMask; // maska przydzielana przez AI pojazdom posiadającym pantograf, aby wymuszały jazdę bezprądową
|
||||||
// jazdę bezprądową
|
|
||||||
TTractionParam tmpTraction;
|
TTractionParam tmpTraction;
|
||||||
double fAdjustment; // korekcja - docelowo przenieść do TrkFoll.cpp wraz z odległością od
|
double fAdjustment; // korekcja - docelowo przenieść do TrkFoll.cpp wraz z odległością od poprzedniego
|
||||||
// poprzedniego
|
|
||||||
TDynamicObject();
|
TDynamicObject();
|
||||||
~TDynamicObject();
|
~TDynamicObject();
|
||||||
double Init( // zwraca długość pojazdu albo 0, jeśli błąd
|
double Init( // zwraca długość pojazdu albo 0, jeśli błąd
|
||||||
std::string Name, std::string BaseDir, std::string asReplacableSkin, std::string Type_Name,
|
std::string Name, std::string BaseDir, std::string asReplacableSkin, std::string Type_Name,
|
||||||
TTrack *Track, double fDist, std::string DriverType, double fVel, std::string TrainName,
|
TTrack *Track, double fDist, std::string DriverType, double fVel, std::string TrainName,
|
||||||
float Load, std::string LoadType, bool Reversed, std::string);
|
float Load, std::string LoadType, bool Reversed, std::string);
|
||||||
|
void create_controller( std::string const Type, bool const Trainset );
|
||||||
void AttachPrev(TDynamicObject *Object, int iType = 1);
|
void AttachPrev(TDynamicObject *Object, int iType = 1);
|
||||||
bool UpdateForce(double dt, double dt1, bool FullVer);
|
bool UpdateForce(double dt, double dt1, bool FullVer);
|
||||||
void LoadUpdate();
|
void LoadUpdate();
|
||||||
|
|||||||
@@ -1953,6 +1953,7 @@ bool TMoverParameters::IncScndCtrl(int CtrlSpeed)
|
|||||||
{
|
{
|
||||||
/*OK:=*/SendCtrlToNext("MainCtrl", MainCtrlPos, CabNo); //???
|
/*OK:=*/SendCtrlToNext("MainCtrl", MainCtrlPos, CabNo); //???
|
||||||
/*OK:=*/SendCtrlToNext("ScndCtrl", ScndCtrlPos, CabNo);
|
/*OK:=*/SendCtrlToNext("ScndCtrl", ScndCtrlPos, CabNo);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // nie ma sterowania
|
else // nie ma sterowania
|
||||||
@@ -1964,11 +1965,14 @@ bool TMoverParameters::IncScndCtrl(int CtrlSpeed)
|
|||||||
LastRelayTime = 0;
|
LastRelayTime = 0;
|
||||||
|
|
||||||
if ((OK) && (EngineType == ElectricInductionMotor))
|
if ((OK) && (EngineType == ElectricInductionMotor))
|
||||||
// NOTE: round() already adds 0.5, are the ones added here as well correct?
|
{
|
||||||
|
// NOTE: round() already adds 0.5, are the ones added here as well correct?
|
||||||
if ((Vmax < 250))
|
if ((Vmax < 250))
|
||||||
ScndCtrlActualPos = Round(Vel + 0.5);
|
ScndCtrlActualPos = Round(Vel);
|
||||||
else
|
else
|
||||||
ScndCtrlActualPos = Round(Vel * 1.0 / 2 + 0.5);
|
ScndCtrlActualPos = Round(Vel * 0.5);
|
||||||
|
SendCtrlToNext("SpeedCntrl", ScndCtrlActualPos, CabNo);
|
||||||
|
}
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@@ -2019,7 +2023,10 @@ bool TMoverParameters::DecScndCtrl(int CtrlSpeed)
|
|||||||
LastRelayTime = 0;
|
LastRelayTime = 0;
|
||||||
|
|
||||||
if ((OK) && (EngineType == ElectricInductionMotor))
|
if ((OK) && (EngineType == ElectricInductionMotor))
|
||||||
|
{
|
||||||
ScndCtrlActualPos = 0;
|
ScndCtrlActualPos = 0;
|
||||||
|
SendCtrlToNext("SpeedCntrl", ScndCtrlActualPos, CabNo);
|
||||||
|
}
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@@ -2370,7 +2377,7 @@ bool TMoverParameters::MainSwitch( bool const State, int const Notify )
|
|||||||
if ((Mains != State) && (MainCtrlPosNo > 0))
|
if ((Mains != State) && (MainCtrlPosNo > 0))
|
||||||
{
|
{
|
||||||
if ((State == false) ||
|
if ((State == false) ||
|
||||||
((ScndCtrlPos == 0) && ((ConvOvldFlag == false) || (TrainType == dt_EZT)) &&
|
(((ScndCtrlPos == 0)||(EngineType == ElectricInductionMotor)) && ((ConvOvldFlag == false) || (TrainType == dt_EZT)) &&
|
||||||
(LastSwitchingTime > CtrlDelay) && !TestFlag(DamageFlag, dtrain_out) &&
|
(LastSwitchingTime > CtrlDelay) && !TestFlag(DamageFlag, dtrain_out) &&
|
||||||
!TestFlag(EngDmgFlag, 1)))
|
!TestFlag(EngDmgFlag, 1)))
|
||||||
{
|
{
|
||||||
@@ -8059,14 +8066,6 @@ bool TMoverParameters::RunCommand( std::string Command, double CValue1, double C
|
|||||||
}
|
}
|
||||||
else if (Command == "ScndCtrl")
|
else if (Command == "ScndCtrl")
|
||||||
{
|
{
|
||||||
if ((EngineType == ElectricInductionMotor))
|
|
||||||
if ((ScndCtrlPos == 0) && (floor(CValue1) > 0))
|
|
||||||
if ((Vmax < 250))
|
|
||||||
ScndCtrlActualPos = Round(Vel + 0.5);
|
|
||||||
else
|
|
||||||
ScndCtrlActualPos = Round(Vel / 2 + 0.5);
|
|
||||||
else if ((floor(CValue1) == 0))
|
|
||||||
ScndCtrlActualPos = 0;
|
|
||||||
if (ScndCtrlPosNo >= floor(CValue1))
|
if (ScndCtrlPosNo >= floor(CValue1))
|
||||||
ScndCtrlPos = static_cast<int>(floor(CValue1));
|
ScndCtrlPos = static_cast<int>(floor(CValue1));
|
||||||
OK = SendCtrlToNext( Command, CValue1, CValue2, Couplertype );
|
OK = SendCtrlToNext( Command, CValue1, CValue2, Couplertype );
|
||||||
@@ -8389,6 +8388,12 @@ bool TMoverParameters::RunCommand( std::string Command, double CValue1, double C
|
|||||||
}
|
}
|
||||||
// if OK then LoadStatus:=0;
|
// if OK then LoadStatus:=0;
|
||||||
}
|
}
|
||||||
|
else if (Command == "SpeedCntrl")
|
||||||
|
{
|
||||||
|
if ((EngineType == ElectricInductionMotor))
|
||||||
|
ScndCtrlActualPos = static_cast<int>(round(CValue1));
|
||||||
|
OK = SendCtrlToNext(Command, CValue1, CValue2, Couplertype);
|
||||||
|
}
|
||||||
|
|
||||||
return OK; // dla true komenda będzie usunięta, dla false wykonana ponownie
|
return OK; // dla true komenda będzie usunięta, dla false wykonana ponownie
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -812,7 +812,7 @@ state_manager::deserialize_dynamic( cParser &Input, scene::scratch_data &Scratch
|
|||||||
Scratchpad.trainset.offset -= length;
|
Scratchpad.trainset.offset -= length;
|
||||||
// automatically establish permanent connections for couplers which specify them in their definitions
|
// automatically establish permanent connections for couplers which specify them in their definitions
|
||||||
if( ( coupling != 0 )
|
if( ( coupling != 0 )
|
||||||
&& ( vehicle->MoverParameters->Couplers[ ( offset == -1.0 ? 0 : 1 ) ].AllowedFlag & coupling::permanent ) ) {
|
&& ( vehicle->MoverParameters->Couplers[ ( offset == -1.0 ? side::front : side::rear ) ].AllowedFlag & coupling::permanent ) ) {
|
||||||
coupling |= coupling::permanent;
|
coupling |= coupling::permanent;
|
||||||
}
|
}
|
||||||
if( true == Scratchpad.trainset.is_open ) {
|
if( true == Scratchpad.trainset.is_open ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user