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

refactor: replace null with nullptr

This commit is contained in:
jerrrrycho
2026-06-28 21:42:45 +02:00
parent 1aac9b4e76
commit bf147dd155
15 changed files with 118 additions and 168 deletions

View File

@@ -72,14 +72,14 @@ void SetLedState( unsigned char Code, bool bOn ) {
int Console::iBits = 0; // zmienna statyczna - obiekt Console jest jednen wspólny int Console::iBits = 0; // zmienna statyczna - obiekt Console jest jednen wspólny
int Console::iMode = 0; int Console::iMode = 0;
int Console::iConfig = 0; int Console::iConfig = 0;
TPoKeys55 *Console::PoKeys55[2] = {NULL, NULL}; TPoKeys55 *Console::PoKeys55[2] = {nullptr, nullptr};
TLPT *Console::LPT = NULL; TLPT *Console::LPT = nullptr;
int Console::iSwitch[8]; // bistabilne w kabinie, załączane z [Shift], wyłączane bez int Console::iSwitch[8]; // bistabilne w kabinie, załączane z [Shift], wyłączane bez
int Console::iButton[8]; // monostabilne w kabinie, załączane podczas trzymania klawisza int Console::iButton[8]; // monostabilne w kabinie, załączane podczas trzymania klawisza
Console::Console() Console::Console()
{ {
PoKeys55[0] = PoKeys55[1] = NULL; PoKeys55[0] = PoKeys55[1] = nullptr;
for (int i = 0; i < 8; ++i) for (int i = 0; i < 8; ++i)
{ // zerowanie przełączników { // zerowanie przełączników
iSwitch[i] = 0; // bity 0..127 - bez [Ctrl], 128..255 - z [Ctrl] iSwitch[i] = 0; // bity 0..127 - bez [Ctrl], 128..255 - z [Ctrl]
@@ -118,7 +118,7 @@ int Console::On()
else else
{ // połączenie nie wyszło, ma być NULL { // połączenie nie wyszło, ma być NULL
delete LPT; delete LPT;
LPT = NULL; LPT = nullptr;
} }
break; break;
case 4: // PoKeys case 4: // PoKeys
@@ -131,7 +131,7 @@ int Console::On()
else else
{ // połączenie nie wyszło, ma być NULL { // połączenie nie wyszło, ma być NULL
delete PoKeys55[0]; delete PoKeys55[0];
PoKeys55[0] = NULL; PoKeys55[0] = nullptr;
WriteLog("PoKeys not found!"); WriteLog("PoKeys not found!");
} }
break; break;

View File

@@ -76,13 +76,13 @@ bool TPoKeys55::Connect()
// First populate a list of plugged in devices (by specifying "DIGCF_PRESENT"), which are of the // First populate a list of plugged in devices (by specifying "DIGCF_PRESENT"), which are of the
// specified class GUID. // specified class GUID.
DeviceInfoTable = DeviceInfoTable =
SetupDiGetClassDevs(&InterfaceClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); SetupDiGetClassDevs(&InterfaceClassGuid, nullptr, nullptr, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
// Now look through the list we just populated. We are trying to see if any of them match our // Now look through the list we just populated. We are trying to see if any of them match our
// device. // device.
while (true) while (true)
{ {
InterfaceDataStructure->cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); InterfaceDataStructure->cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
if (SetupDiEnumDeviceInterfaces(DeviceInfoTable, NULL, &InterfaceClassGuid, InterfaceIndex, if (SetupDiEnumDeviceInterfaces(DeviceInfoTable, nullptr, &InterfaceClassGuid, InterfaceIndex,
InterfaceDataStructure)) InterfaceDataStructure))
{ {
ErrorStatus = GetLastError(); ErrorStatus = GetLastError();
@@ -113,11 +113,11 @@ bool TPoKeys55::Connect()
// First query for the size of the hardware ID, so we can know how big a buffer to allocate // First query for the size of the hardware ID, so we can know how big a buffer to allocate
// for the data. // for the data.
SetupDiGetDeviceRegistryProperty(DeviceInfoTable, &DevInfoData, SPDRP_HARDWAREID, SetupDiGetDeviceRegistryProperty(DeviceInfoTable, &DevInfoData, SPDRP_HARDWAREID,
&dwRegType, NULL, 0, &dwRegSize); &dwRegType, nullptr, 0, &dwRegSize);
// Allocate a buffer for the hardware ID. // Allocate a buffer for the hardware ID.
// PropertyValueBuffer=(BYTE*)malloc(dwRegSize); // PropertyValueBuffer=(BYTE*)malloc(dwRegSize);
PropertyValueBuffer = new BYTE[dwRegSize]; PropertyValueBuffer = new BYTE[dwRegSize];
if (PropertyValueBuffer == NULL) // if null,error,couldn't allocate enough memory if (PropertyValueBuffer == nullptr) // if null,error,couldn't allocate enough memory
{ // Can't really recover from this situation,just exit instead. { // Can't really recover from this situation,just exit instead.
// ShowMessage("Allocation PropertyValueBuffer impossible"); // ShowMessage("Allocation PropertyValueBuffer impossible");
SetupDiDestroyDeviceInfoList( SetupDiDestroyDeviceInfoList(
@@ -132,7 +132,7 @@ bool TPoKeys55::Connect()
// and PID,in the example // and PID,in the example
// format "Vid_04d8&Pid_003f". // format "Vid_04d8&Pid_003f".
SetupDiGetDeviceRegistryProperty(DeviceInfoTable, &DevInfoData, SPDRP_HARDWAREID, SetupDiGetDeviceRegistryProperty(DeviceInfoTable, &DevInfoData, SPDRP_HARDWAREID,
&dwRegType, PropertyValueBuffer, dwRegSize, NULL); &dwRegType, PropertyValueBuffer, dwRegSize, nullptr);
// Now check if the first string in the hardware ID matches the device ID of my USB device. // Now check if the first string in the hardware ID matches the device ID of my USB device.
// ListBox1->Items->Add((char*)PropertyValueBuffer); // ListBox1->Items->Add((char*)PropertyValueBuffer);
DeviceIDFromRegistry = reinterpret_cast<char*>(PropertyValueBuffer); DeviceIDFromRegistry = reinterpret_cast<char*>(PropertyValueBuffer);
@@ -157,12 +157,11 @@ bool TPoKeys55::Connect()
// get the structure (after we have allocated enough memory for the structure.) // get the structure (after we have allocated enough memory for the structure.)
DetailedInterfaceDataStructure->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); DetailedInterfaceDataStructure->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
// First call populates "StructureSize" with the correct value // First call populates "StructureSize" with the correct value
SetupDiGetDeviceInterfaceDetail(DeviceInfoTable, InterfaceDataStructure, NULL, 0, SetupDiGetDeviceInterfaceDetail(DeviceInfoTable, InterfaceDataStructure, nullptr, 0,
&StructureSize, NULL); &StructureSize, nullptr);
DetailedInterfaceDataStructure = DetailedInterfaceDataStructure =
(PSP_DEVICE_INTERFACE_DETAIL_DATA)(malloc(StructureSize)); // Allocate enough memory (PSP_DEVICE_INTERFACE_DETAIL_DATA)(malloc(StructureSize)); // Allocate enough memory
if (DetailedInterfaceDataStructure == if (DetailedInterfaceDataStructure == nullptr) // if null,error,couldn't allocate enough memory
NULL) // if null,error,couldn't allocate enough memory
{ // Can't really recover from this situation,just exit instead. { // Can't really recover from this situation,just exit instead.
SetupDiDestroyDeviceInfoList( SetupDiDestroyDeviceInfoList(
DeviceInfoTable); // Clean up the old structure we no longer need. DeviceInfoTable); // Clean up the old structure we no longer need.
@@ -171,19 +170,18 @@ bool TPoKeys55::Connect()
DetailedInterfaceDataStructure->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); DetailedInterfaceDataStructure->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
// Now call SetupDiGetDeviceInterfaceDetail() a second time to receive the goods. // Now call SetupDiGetDeviceInterfaceDetail() a second time to receive the goods.
SetupDiGetDeviceInterfaceDetail(DeviceInfoTable, InterfaceDataStructure, SetupDiGetDeviceInterfaceDetail(DeviceInfoTable, InterfaceDataStructure,
DetailedInterfaceDataStructure, StructureSize, NULL, DetailedInterfaceDataStructure, StructureSize, nullptr, nullptr);
NULL);
// We now have the proper device path,and we can finally open read and write handles to // We now have the proper device path,and we can finally open read and write handles to
// the device. // the device.
// We store the handles in the global variables "WriteHandle" and "ReadHandle",which we // We store the handles in the global variables "WriteHandle" and "ReadHandle",which we
// will use later to actually communicate. // will use later to actually communicate.
WriteHandle = CreateFile((DetailedInterfaceDataStructure->DevicePath), GENERIC_WRITE, WriteHandle = CreateFile((DetailedInterfaceDataStructure->DevicePath), GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, 0);
ErrorStatus = GetLastError(); ErrorStatus = GetLastError();
// if (ErrorStatus==ERROR_SUCCESS) // if (ErrorStatus==ERROR_SUCCESS)
// ToggleLedBtn->Enabled=true;//Make button no longer greyed out // ToggleLedBtn->Enabled=true;//Make button no longer greyed out
ReadHandle = CreateFile((DetailedInterfaceDataStructure->DevicePath), GENERIC_READ, ReadHandle = CreateFile((DetailedInterfaceDataStructure->DevicePath), GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, 0);
ErrorStatus = GetLastError(); ErrorStatus = GetLastError();
if (ErrorStatus == ERROR_SUCCESS) if (ErrorStatus == ERROR_SUCCESS)
{ {

View File

@@ -536,7 +536,7 @@ TMoverParameters::TMoverParameters(double VelInitial, std::string TypeNameInit,
{ {
Couplers[b].AllowedFlag = 3; // domyślnie hak i hamulec, inne trzeba włączyć jawnie w FIZ Couplers[b].AllowedFlag = 3; // domyślnie hak i hamulec, inne trzeba włączyć jawnie w FIZ
Couplers[b].CouplingFlag = 0; Couplers[b].CouplingFlag = 0;
Couplers[b].Connected = NULL; Couplers[b].Connected = nullptr;
Couplers[b].ConnectedNr = 0; // Ra: to nie ma znaczenia jak nie podłączony Couplers[b].ConnectedNr = 0; // Ra: to nie ma znaczenia jak nie podłączony
Couplers[b].Render = false; Couplers[b].Render = false;
Couplers[b].CForce = 0.0; Couplers[b].CForce = 0.0;
@@ -4630,7 +4630,7 @@ void TMoverParameters::UpdatePipePressure(double dt)
LocBrakePress = LocHandle->GetCP(); LocBrakePress = LocHandle->GetCP();
for (int b = 0; b < 2; b++) for (int b = 0; b < 2; b++)
if (((TrainType & (dt_ET41 | dt_ET42)) != 0) && (Couplers[b].Connected != NULL)) // nie podoba mi się to rozwiązanie, chyba trzeba if (((TrainType & (dt_ET41 | dt_ET42)) != 0) && (Couplers[b].Connected != nullptr)) // nie podoba mi się to rozwiązanie, chyba trzeba
// dodać jakiś wpis do fizyki na to // dodać jakiś wpis do fizyki na to
if (((Couplers[b].Connected->TrainType & (dt_ET41 | dt_ET42)) != 0) && ((Couplers[b].CouplingFlag & 36) == 36)) if (((Couplers[b].Connected->TrainType & (dt_ET41 | dt_ET42)) != 0) && ((Couplers[b].CouplingFlag & 36) == 36))
LocBrakePress = std::max(Couplers[b].Connected->LocHandle->GetCP(), LocBrakePress); LocBrakePress = std::max(Couplers[b].Connected->LocHandle->GetCP(), LocBrakePress);
@@ -4779,7 +4779,7 @@ void TMoverParameters::UpdateScndPipePressure(double dt)
dv2 = 0; dv2 = 0;
// sprzeg 1 // sprzeg 1
if (Couplers[0].Connected != NULL) if (Couplers[0].Connected != nullptr)
if (TestFlag(Couplers[0].CouplingFlag, ctrain_scndpneumatic)) if (TestFlag(Couplers[0].CouplingFlag, ctrain_scndpneumatic))
{ {
c = Couplers[0].Connected; // skrot c = Couplers[0].Connected; // skrot
@@ -4789,7 +4789,7 @@ void TMoverParameters::UpdateScndPipePressure(double dt)
c->Pipe2->Flow(-dv1); c->Pipe2->Flow(-dv1);
} }
// sprzeg 2 // sprzeg 2
if (Couplers[1].Connected != NULL) if (Couplers[1].Connected != nullptr)
if (TestFlag(Couplers[1].CouplingFlag, ctrain_scndpneumatic)) if (TestFlag(Couplers[1].CouplingFlag, ctrain_scndpneumatic))
{ {
c = Couplers[1].Connected; // skrot c = Couplers[1].Connected; // skrot
@@ -4798,7 +4798,7 @@ void TMoverParameters::UpdateScndPipePressure(double dt)
c->switch_physics(true); c->switch_physics(true);
c->Pipe2->Flow(-dv2); c->Pipe2->Flow(-dv2);
} }
if ((Couplers[1].Connected != NULL) && (Couplers[0].Connected != NULL)) if ((Couplers[1].Connected != nullptr) && (Couplers[0].Connected != nullptr))
if ((TestFlag(Couplers[0].CouplingFlag, ctrain_scndpneumatic)) && (TestFlag(Couplers[1].CouplingFlag, ctrain_scndpneumatic))) if ((TestFlag(Couplers[0].CouplingFlag, ctrain_scndpneumatic)) && (TestFlag(Couplers[1].CouplingFlag, ctrain_scndpneumatic)))
{ {
dV = 0.00025 * dt * PF(Couplers[0].Connected->ScndPipePress, Couplers[1].Connected->ScndPipePress, Spz * 0.25); dV = 0.00025 * dt * PF(Couplers[0].Connected->ScndPipePress, Couplers[1].Connected->ScndPipePress, Spz * 0.25);
@@ -4869,7 +4869,7 @@ double TMoverParameters::GetDVc(double dt)
dv1 = 0; dv1 = 0;
dv2 = 0; dv2 = 0;
// sprzeg 1 // sprzeg 1
if (Couplers[0].Connected != NULL) if (Couplers[0].Connected != nullptr)
if (TestFlag(Couplers[0].CouplingFlag, ctrain_pneumatic)) if (TestFlag(Couplers[0].CouplingFlag, ctrain_pneumatic))
{ //*0.85 { //*0.85
c = Couplers[0].Connected; // skrot //0.08 //e/D * L/D = e/D^2 * L c = Couplers[0].Connected; // skrot //0.08 //e/D * L/D = e/D^2 * L
@@ -4879,7 +4879,7 @@ double TMoverParameters::GetDVc(double dt)
c->Pipe->Flow(-dv1); c->Pipe->Flow(-dv1);
} }
// sprzeg 2 // sprzeg 2
if (Couplers[1].Connected != NULL) if (Couplers[1].Connected != nullptr)
if (TestFlag(Couplers[1].CouplingFlag, ctrain_pneumatic)) if (TestFlag(Couplers[1].CouplingFlag, ctrain_pneumatic))
{ {
c = Couplers[1].Connected; // skrot c = Couplers[1].Connected; // skrot

View File

@@ -1086,7 +1086,7 @@ void eu07_application::init_files()
#ifdef _WIN32 #ifdef _WIN32
DeleteFile("log.txt"); DeleteFile("log.txt");
DeleteFile("errors.txt"); DeleteFile("errors.txt");
CreateDirectory("logs", NULL); CreateDirectory("logs", nullptr);
#elif __unix__ #elif __unix__
unlink("log.txt"); unlink("log.txt");
unlink("errors.txt"); unlink("errors.txt");

View File

@@ -34,7 +34,7 @@ openal_buffer::openal_buffer( std::string const &Filename ) :
if (sf == nullptr) if (sf == nullptr)
throw std::runtime_error("sound: sf_open failed"); throw std::runtime_error("sound: sf_open failed");
sf_command(sf, SFC_SET_NORM_FLOAT, NULL, SF_TRUE); sf_command(sf, SFC_SET_NORM_FLOAT, nullptr, SF_TRUE);
float *fbuf = new float[si.frames * si.channels]; float *fbuf = new float[si.frames * si.channels];
if (sf_readf_float(sf, fbuf, si.frames) != si.frames) if (sf_readf_float(sf, fbuf, si.frames) != si.frames)

View File

@@ -46,7 +46,7 @@ piped_proc::piped_proc(std::string cmd, bool write)
saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
saAttr.bInheritHandle = TRUE; saAttr.bInheritHandle = TRUE;
saAttr.lpSecurityDescriptor = NULL; saAttr.lpSecurityDescriptor = nullptr;
if (!CreatePipe(&pipe_rd, &pipe_wr, &saAttr, 0)) { if (!CreatePipe(&pipe_rd, &pipe_wr, &saAttr, 0)) {
ErrorLog("piped_proc: CreatePipe failed!"); ErrorLog("piped_proc: CreatePipe failed!");
@@ -66,7 +66,7 @@ piped_proc::piped_proc(std::string cmd, bool write)
siStartInfo.hStdInput = pipe_rd; siStartInfo.hStdInput = pipe_rd;
siStartInfo.dwFlags |= STARTF_USESTDHANDLES; siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
if (!CreateProcessA(NULL, (char*)cmd.c_str(), NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &siStartInfo, &process)) { if (!CreateProcessA(nullptr, (char*)cmd.c_str(), nullptr, nullptr, TRUE, CREATE_NO_WINDOW, nullptr, nullptr, &siStartInfo, &process)) {
ErrorLog("piped_proc: CreateProcess failed!"); ErrorLog("piped_proc: CreateProcess failed!");
return; return;
} }
@@ -92,7 +92,7 @@ size_t piped_proc::read(unsigned char *buf, size_t len)
return 0; return 0;
DWORD read = 0; DWORD read = 0;
BOOL ret = ReadFile(pipe_rd, buf, len, &read, NULL); BOOL ret = ReadFile(pipe_rd, buf, len, &read, nullptr);
return read; return read;
} }
@@ -103,7 +103,7 @@ size_t piped_proc::write(unsigned char *buf, size_t len)
return 0; return 0;
DWORD wrote = 0; DWORD wrote = 0;
BOOL ret = WriteFile(pipe_wr, buf, len, &wrote, NULL); BOOL ret = WriteFile(pipe_wr, buf, len, &wrote, nullptr);
return wrote; return wrote;
} }

View File

@@ -36,16 +36,16 @@ TAnimContainer::TAnimContainer()
vTranslateTo = glm::dvec3(0.0, 0.0, 0.0); // docelowe przesunięcie vTranslateTo = glm::dvec3(0.0, 0.0, 0.0); // docelowe przesunięcie
fTranslateSpeed = 0.0; fTranslateSpeed = 0.0;
fAngleSpeed = 0.0; fAngleSpeed = 0.0;
pSubModel = NULL; pSubModel = nullptr;
iAnim = 0; // położenie początkowe iAnim = 0; // położenie początkowe
evDone = NULL; // powiadamianie o zakończeniu animacji evDone = nullptr; // powiadamianie o zakończeniu animacji
} }
bool TAnimContainer::Init(TSubModel *pNewSubModel) bool TAnimContainer::Init(TSubModel *pNewSubModel)
{ {
fRotateSpeed = 0.0f; fRotateSpeed = 0.0f;
pSubModel = pNewSubModel; pSubModel = pNewSubModel;
return (pSubModel != NULL); return (pSubModel != nullptr);
} }
void TAnimContainer::SetRotateAnim(glm::vec3 vNewRotateAngles, double fNewRotateSpeed) void TAnimContainer::SetRotateAnim(glm::vec3 vNewRotateAngles, double fNewRotateSpeed)

View File

@@ -30,7 +30,7 @@ using namespace Mtable;
float TSubModel::fSquareDist = 0.f; float TSubModel::fSquareDist = 0.f;
std::uintptr_t TSubModel::iInstance; // numer renderowanego egzemplarza obiektu std::uintptr_t TSubModel::iInstance; // numer renderowanego egzemplarza obiektu
texture_handle const *TSubModel::ReplacableSkinId = NULL; texture_handle const *TSubModel::ReplacableSkinId = nullptr;
int TSubModel::iAlpha = 0x30300030; // maska do testowania flag tekstur wymiennych int TSubModel::iAlpha = 0x30300030; // maska do testowania flag tekstur wymiennych
TModel3d *TSubModel::pRoot; // Ra: tymczasowo wskaźnik na model widoczny z submodelu TModel3d *TSubModel::pRoot; // Ra: tymczasowo wskaźnik na model widoczny z submodelu
std::string *TSubModel::pasText; std::string *TSubModel::pasText;
@@ -1116,7 +1116,7 @@ TSubModel *TSubModel::GetFromName(std::string const &search, bool i)
if (result) if (result)
return result; return result;
} }
return NULL; return nullptr;
}; };
// WORD hbIndices[18]={3,0,1,5,4,2,1,0,4,1,5,3,2,3,5,2,4,0}; // WORD hbIndices[18]={3,0,1,5,4,2,1,0,4,1,5,3,2,3,5,2,4,0};

View File

@@ -41,9 +41,9 @@ int AirCoupler::GetStatus()
*/ */
void AirCoupler::Clear() void AirCoupler::Clear()
{ {
ModelOn = NULL; ModelOn = nullptr;
ModelOff = NULL; ModelOff = nullptr;
ModelxOn = NULL; ModelxOn = nullptr;
On = false; On = false;
xOn = false; xOn = false;
} }
@@ -73,9 +73,9 @@ void AirCoupler::Load(cParser *Parser, TModel3d *Model)
} }
else else
{ {
ModelOn = NULL; ModelOn = nullptr;
ModelxOn = NULL; ModelxOn = nullptr;
ModelOff = NULL; ModelOff = nullptr;
} }
} }

View File

@@ -197,7 +197,7 @@ void TSpeedPos::Clear()
fSectionVelocityDist = 0.0; //brak długości fSectionVelocityDist = 0.0; //brak długości
fDist = 0.0; fDist = 0.0;
vPos = glm::dvec3(0, 0, 0); vPos = glm::dvec3(0, 0, 0);
trTrack = NULL; // brak wskaźnika trTrack = nullptr; // brak wskaźnika
}; };
void TSpeedPos::CommandCheck() void TSpeedPos::CommandCheck()
@@ -1918,7 +1918,7 @@ TController::TController(bool AI, TDynamicObject *NewControll, bool InitPsyche,
if( WriteLogFlag ) { if( WriteLogFlag ) {
#ifdef _WIN32 #ifdef _WIN32
CreateDirectory( "physicslog", NULL ); CreateDirectory( "physicslog", nullptr);
#elif __unix__ #elif __unix__
mkdir( "physicslog", 0744 ); mkdir( "physicslog", 0744 );
#endif #endif

View File

@@ -71,9 +71,27 @@ TextureTest( std::string const &Name ) {
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void TAnimPant::common_pantograph_settings()
{ // wspólne ustawienia, liczone po przypisaniu wymiarów ramion
vPos = glm::dvec3(0, 0, 0);
fAngleL0 = glm::radians(2.8547285515689267247882521833308);
fAngleL = fAngleL0; // początkowy kąt dolnego ramienia
fAngleU0 = acos((fLenL1 * cos(fAngleL) + fHoriz) / fLenU1); // górne ramię
fAngleU = fAngleU0; // początkowy kąt
PantWys = fLenL1 * sin(fAngleL) + fLenU1 * sin(fAngleU) + fHeight; // wysokość początkowa
PantTraction = PantWys;
hvPowerWire = nullptr;
fWidthExtra = 0.381f; //(2.032m-1.027)/2
// poza obszarem roboczym jest aproksymacja łamaną o 5 odcinkach
fHeightExtra[0] = 0.0f; //+0.0762
fHeightExtra[1] = -0.01f; //+0.1524
fHeightExtra[2] = -0.03f; //+0.2286
fHeightExtra[3] = -0.07f; //+0.3048
fHeightExtra[4] = -0.15f; //+0.3810
}
void TAnimPant::AKP_4E() void TAnimPant::AKP_4E()
{ // ustawienie wymiarów dla pantografu AKP-4E { // ustawienie wymiarów dla pantografu AKP-4E
vPos = glm::dvec3(0, 0, 0); // przypisanie domyśnych współczynników do pantografów
fLenL1 = 1.22; // 1.176289 w modelach fLenL1 = 1.22; // 1.176289 w modelach
fLenU1 = 1.755; // 1.724482197 w modelach fLenU1 = 1.755; // 1.724482197 w modelach
fHoriz = 0.535; // 0.54555075 przesunięcie ślizgu w długości pojazdu względem fHoriz = 0.535; // 0.54555075 przesunięcie ślizgu w długości pojazdu względem
@@ -81,27 +99,10 @@ void TAnimPant::AKP_4E()
// ramienia // ramienia
fHeight = 0.07; // wysokość ślizgu ponad oś obrotu fHeight = 0.07; // wysokość ślizgu ponad oś obrotu
fWidth = 0.635; // połowa szerokości ślizgu, 0.635 dla AKP-1 i AKP-4E fWidth = 0.635; // połowa szerokości ślizgu, 0.635 dla AKP-1 i AKP-4E
fAngleL0 = glm::radians(2.8547285515689267247882521833308); common_pantograph_settings();
fAngleL = fAngleL0; // początkowy kąt dolnego ramienia
// fAngleU0=acos((1.22*cos(fAngleL)+0.535)/1.755); //górne ramię
fAngleU0 = acos((fLenL1 * cos(fAngleL) + fHoriz) / fLenU1); // górne ramię
fAngleU = fAngleU0; // początkowy kąt
// PantWys=1.22*sin(fAngleL)+1.755*sin(fAngleU); //wysokość początkowa
PantWys = fLenL1 * sin(fAngleL) + fLenU1 * sin(fAngleU) + fHeight; // wysokość początkowa
PantTraction = PantWys;
hvPowerWire = NULL;
fWidthExtra = 0.381f; //(2.032m-1.027)/2
// poza obszarem roboczym jest aproksymacja łamaną o 5 odcinkach
fHeightExtra[0] = 0.0f; //+0.0762
fHeightExtra[1] = -0.01f; //+0.1524
fHeightExtra[2] = -0.03f; //+0.2286
fHeightExtra[3] = -0.07f; //+0.3048
fHeightExtra[4] = -0.15f; //+0.3810
}; };
void TAnimPant::WBL85() void TAnimPant::WBL85()
{ // ustawienie wymiarów dla pantografu WBL88 { // ustawienie wymiarów dla pantografu WBL88
vPos = glm::dvec3(0, 0, 0); // przypisanie domyśnych współczynników do pantografów
// mnozniki animacji ramion dla pantografu WBL88 // mnozniki animacji ramion dla pantografu WBL88
rd1rf = 1.f; rd1rf = 1.f;
rd2rf = 1.2; rd2rf = 1.2;
@@ -115,27 +116,10 @@ void TAnimPant::WBL85()
// osi obrotu dolnego ramienia // osi obrotu dolnego ramienia
fHeight = 0.09353; // wysokość ślizgu ponad oś obrotu fHeight = 0.09353; // wysokość ślizgu ponad oś obrotu
fWidth = 0.4969; // połowa szerokości ślizgu fWidth = 0.4969; // połowa szerokości ślizgu
fAngleL0 = glm::radians(2.8547285515689267247882521833308); common_pantograph_settings();
fAngleL = fAngleL0; // początkowy kąt dolnego ramienia
// fAngleU0=acos((1.22*cos(fAngleL)+0.535)/1.755); //górne ramię
fAngleU0 = acos((fLenL1 * cos(fAngleL) + fHoriz) / fLenU1); // górne ramię
fAngleU = fAngleU0; // początkowy kąt
// PantWys=1.22*sin(fAngleL)+1.755*sin(fAngleU); //wysokość początkowa
PantWys = fLenL1 * sin(fAngleL) + fLenU1 * sin(fAngleU) + fHeight; // wysokość początkowa
PantTraction = PantWys;
hvPowerWire = NULL;
fWidthExtra = 0.381f; //(2.032m-1.027)/2
// poza obszarem roboczym jest aproksymacja łamaną o 5 odcinkach
fHeightExtra[0] = 0.0f; //+0.0762
fHeightExtra[1] = -0.01f; //+0.1524
fHeightExtra[2] = -0.03f; //+0.2286
fHeightExtra[3] = -0.07f; //+0.3048
fHeightExtra[4] = -0.15f; //+0.3810
}; };
void TAnimPant::EC160_200() void TAnimPant::EC160_200()
{ // ustawienie wymiarów dla pantografow EC160 lub EC200 { // ustawienie wymiarów dla pantografow EC160 lub EC200
vPos = glm::dvec3(0, 0, 0); // przypisanie domyśnych współczynników do pantografów
// mnozniki animacji ramion dla pantografow EC160 lub EC200 // mnozniki animacji ramion dla pantografow EC160 lub EC200
rd1rf = 1.f; rd1rf = 1.f;
rd2rf = 0.85; rd2rf = 0.85;
@@ -149,27 +133,10 @@ void TAnimPant::EC160_200()
// osi obrotu dolnego ramienia // osi obrotu dolnego ramienia
fHeight = 0.09353; // wysokość ślizgu ponad oś obrotu fHeight = 0.09353; // wysokość ślizgu ponad oś obrotu
fWidth = 0.4969; // połowa szerokości ślizgu fWidth = 0.4969; // połowa szerokości ślizgu
fAngleL0 = glm::radians(2.8547285515689267247882521833308); common_pantograph_settings();
fAngleL = fAngleL0; // początkowy kąt dolnego ramienia
// fAngleU0=acos((1.22*cos(fAngleL)+0.535)/1.755); //górne ramię
fAngleU0 = acos((fLenL1 * cos(fAngleL) + fHoriz) / fLenU1); // górne ramię
fAngleU = fAngleU0; // początkowy kąt
// PantWys=1.22*sin(fAngleL)+1.755*sin(fAngleU); //wysokość początkowa
PantWys = fLenL1 * sin(fAngleL) + fLenU1 * sin(fAngleU) + fHeight; // wysokość początkowa
PantTraction = PantWys;
hvPowerWire = NULL;
fWidthExtra = 0.381f; //(2.032m-1.027)/2
// poza obszarem roboczym jest aproksymacja łamaną o 5 odcinkach
fHeightExtra[0] = 0.0f; //+0.0762
fHeightExtra[1] = -0.01f; //+0.1524
fHeightExtra[2] = -0.03f; //+0.2286
fHeightExtra[3] = -0.07f; //+0.3048
fHeightExtra[4] = -0.15f; //+0.3810
}; };
void TAnimPant::DSAx() void TAnimPant::DSAx()
{ // ustawienie wymiarów dla pantografow z rodziny DSA { // ustawienie wymiarów dla pantografow z rodziny DSA
vPos = glm::dvec3(0, 0, 0); // przypisanie domyśnych współczynników do pantografów
// mnozniki animacji ramion dla pantografow z rodziny DSA // mnozniki animacji ramion dla pantografow z rodziny DSA
rd1rf = 1.f; rd1rf = 1.f;
rd2rf = 1.025; rd2rf = 1.025;
@@ -183,22 +150,7 @@ void TAnimPant::DSAx()
// osi obrotu dolnego ramienia // osi obrotu dolnego ramienia
fHeight = 0.09353; // wysokość ślizgu ponad oś obrotu fHeight = 0.09353; // wysokość ślizgu ponad oś obrotu
fWidth = 0.4969; // połowa szerokości ślizgu fWidth = 0.4969; // połowa szerokości ślizgu
fAngleL0 = glm::radians(2.8547285515689267247882521833308); common_pantograph_settings();
fAngleL = fAngleL0; // początkowy kąt dolnego ramienia
// fAngleU0=acos((1.22*cos(fAngleL)+0.535)/1.755); //górne ramię
fAngleU0 = acos((fLenL1 * cos(fAngleL) + fHoriz) / fLenU1); // górne ramię
fAngleU = fAngleU0; // początkowy kąt
// PantWys=1.22*sin(fAngleL)+1.755*sin(fAngleU); //wysokość początkowa
PantWys = fLenL1 * sin(fAngleL) + fLenU1 * sin(fAngleU) + fHeight; // wysokość początkowa
PantTraction = PantWys;
hvPowerWire = NULL;
fWidthExtra = 0.381f; //(2.032m-1.027)/2
// poza obszarem roboczym jest aproksymacja łamaną o 5 odcinkach
fHeightExtra[0] = 0.0f; //+0.0762
fHeightExtra[1] = -0.01f; //+0.1524
fHeightExtra[2] = -0.03f; //+0.2286
fHeightExtra[3] = -0.07f; //+0.3048
fHeightExtra[4] = -0.15f; //+0.3810
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
int TAnim::TypeSet(int i, TMoverParameters currentMover, int fl) int TAnim::TypeSet(int i, TMoverParameters currentMover, int fl)
@@ -218,7 +170,7 @@ int TAnim::TypeSet(int i, TMoverParameters currentMover, int fl)
break; // 1-drzwi break; // 1-drzwi
case 2: case 2:
iFlags = 0x020; iFlags = 0x020;
fParam = fl ? new float[fl] : NULL; fParam = fl ? new float[fl] : nullptr;
iFlags += fl << 8; iFlags += fl << 8;
break; // 2-wahacz, dźwignia itp. break; // 2-wahacz, dźwignia itp.
case 3: case 3:
@@ -389,7 +341,7 @@ TDynamicObject * TDynamicObject::FirstFind(int &coupler_nr, int cf)
for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zapętlenia składu for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zapętlenia składu
{ {
if (!temp) if (!temp)
return NULL; // Ra: zabezpieczenie przed ewentaulnymi błędami sprzęgów return nullptr; // Ra: zabezpieczenie przed ewentaulnymi błędami sprzęgów
if ((temp->MoverParameters->Couplers[coupler_nr].CouplingFlag & cf) != cf) if ((temp->MoverParameters->Couplers[coupler_nr].CouplingFlag & cf) != cf)
return temp; // nic nie ma już dalej podłączone sprzęgiem cf return temp; // nic nie ma już dalej podłączone sprzęgiem cf
if (coupler_nr == end::front) if (coupler_nr == end::front)
@@ -415,7 +367,7 @@ TDynamicObject * TDynamicObject::FirstFind(int &coupler_nr, int cf)
return temp; // jeśli jednak z tyłu nic nie ma return temp; // jeśli jednak z tyłu nic nie ma
} }
} }
return NULL; // to tylko po wyczerpaniu pętli return nullptr; // to tylko po wyczerpaniu pętli
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@@ -1446,7 +1398,7 @@ TDynamicObject * TDynamicObject::ABuScanNearestObject(glm::vec3 pos, TTrack *Tra
TDynamicObject *FoundedObj; TDynamicObject *FoundedObj;
FoundedObj = FoundedObj =
ABuFindNearestObject(pos, Track, this, CouplNr); // zwraca numer sprzęgu znalezionego pojazdu ABuFindNearestObject(pos, Track, this, CouplNr); // zwraca numer sprzęgu znalezionego pojazdu
if (FoundedObj == NULL) if (FoundedObj == nullptr)
{ {
double ActDist; // Przeskanowana odleglosc. double ActDist; // Przeskanowana odleglosc.
double CurrDist = 0; // Aktualna dlugosc toru. double CurrDist = 0; // Aktualna dlugosc toru.
@@ -1478,11 +1430,11 @@ TDynamicObject * TDynamicObject::ABuScanNearestObject(glm::vec3 pos, TTrack *Tra
ScanDir = -ScanDir; ScanDir = -ScanDir;
} }
} }
if (Track != NULL) if (Track != nullptr)
{ // jesli jest kolejny odcinek toru { // jesli jest kolejny odcinek toru
CurrDist = Track->Length(); CurrDist = Track->Length();
FoundedObj = ABuFindNearestObject(pos, Track, this, CouplNr); FoundedObj = ABuFindNearestObject(pos, Track, this, CouplNr);
if (FoundedObj != NULL) if (FoundedObj != nullptr)
ActDist = ScanDist; ActDist = ScanDist;
} }
else // Jesli nie ma, to wychodzimy. else // Jesli nie ma, to wychodzimy.
@@ -1505,7 +1457,7 @@ void TDynamicObject::ABuBogies()
{ // Obracanie wozkow na zakretach. Na razie { // Obracanie wozkow na zakretach. Na razie
// uwzględnia tylko zakręty, // uwzględnia tylko zakręty,
// bez zadnych gorek i innych przeszkod. // bez zadnych gorek i innych przeszkod.
if ((smBogie[0] != NULL) && (smBogie[1] != NULL)) if ((smBogie[0] != nullptr) && (smBogie[1] != nullptr))
{ {
// modelRot.z=ABuAcos(Axle0.pPosition-Axle1.pPosition); //kąt obrotu pojazdu // modelRot.z=ABuAcos(Axle0.pPosition-Axle1.pPosition); //kąt obrotu pojazdu
// [rad] // [rad]
@@ -1661,13 +1613,13 @@ int TDynamicObject::Dettach(int dir)
TDynamicObject *d = this; TDynamicObject *d = this;
while (d) while (d)
{ {
d->ctOwner = NULL; // usuwanie właściciela d->ctOwner = nullptr; // usuwanie właściciela
d = d->Prev(); d = d->Prev();
} }
d = Next(); d = Next();
while (d) while (d)
{ {
d->ctOwner = NULL; // usuwanie właściciela d->ctOwner = nullptr; // usuwanie właściciela
d = d->Next(); // i w drugą stronę d = d->Next(); // i w drugą stronę
} }
} }
@@ -1872,8 +1824,8 @@ TDynamicObject::TDynamicObject() {
vFront = vWorldFront; vFront = vWorldFront;
vLeft = vWorldLeft; vLeft = vWorldLeft;
iNumAxles = 0; iNumAxles = 0;
MoverParameters = NULL; MoverParameters = nullptr;
Mechanik = NULL; Mechanik = nullptr;
MechInside = false; MechInside = false;
// McZapkie-270202 // McZapkie-270202
Controller = AIdriver; Controller = AIdriver;
@@ -1881,7 +1833,7 @@ TDynamicObject::TDynamicObject() {
// NextConnected = PrevConnected = NULL; // NextConnected = PrevConnected = NULL;
// NextConnectedNo = PrevConnectedNo = 2; // ABu: Numery sprzegow. 2=nie podłączony // NextConnectedNo = PrevConnectedNo = 2; // ABu: Numery sprzegow. 2=nie podłączony
bEnabled = true; bEnabled = true;
MyTrack = NULL; MyTrack = nullptr;
// McZapkie-260202 // McZapkie-260202
dWheelAngle[0] = 0.0; dWheelAngle[0] = 0.0;
dWheelAngle[1] = 0.0; dWheelAngle[1] = 0.0;
@@ -1889,19 +1841,19 @@ TDynamicObject::TDynamicObject() {
// Winger 160204 - pantografy // Winger 160204 - pantografy
// PantVolume = 3.5; // PantVolume = 3.5;
NoVoltTime = 0; NoVoltTime = 0;
mdModel = NULL; mdModel = nullptr;
mdKabina = NULL; mdKabina = nullptr;
// smWiazary[0]=smWiazary[1]=NULL; // smWiazary[0]=smWiazary[1]=NULL;
smWahacze[0] = smWahacze[1] = smWahacze[2] = smWahacze[3] = NULL; smWahacze[0] = smWahacze[1] = smWahacze[2] = smWahacze[3] = nullptr;
fWahaczeAmp = 0; fWahaczeAmp = 0;
smBrakeMode = NULL; smBrakeMode = nullptr;
smLoadMode = NULL; smLoadMode = nullptr;
mdLoad = NULL; mdLoad = nullptr;
mdLowPolyInt = NULL; mdLowPolyInt = nullptr;
//smMechanik0 = smMechanik1 = NULL; //smMechanik0 = smMechanik1 = NULL;
smBuforLewy[0] = smBuforLewy[1] = NULL; smBuforLewy[0] = smBuforLewy[1] = nullptr;
smBuforPrawy[0] = smBuforPrawy[1] = NULL; smBuforPrawy[0] = smBuforPrawy[1] = nullptr;
smBogie[0] = smBogie[1] = NULL; smBogie[0] = smBogie[1] = nullptr;
bogieRot[0] = bogieRot[1] = glm::dvec3(0, 0, 0); bogieRot[0] = bogieRot[1] = glm::dvec3(0, 0, 0);
modelRot = glm::dvec3(0, 0, 0); modelRot = glm::dvec3(0, 0, 0);
cp1 = cp2 = sp1 = sp2 = 0; cp1 = cp2 = sp1 = sp2 = 0;
@@ -1915,16 +1867,16 @@ TDynamicObject::TDynamicObject() {
// ustawienie liczby modeli animowanych podczas konstruowania obiektu a nie na 0 // ustawienie liczby modeli animowanych podczas konstruowania obiektu a nie na 0
// prowadzi prosto do wysypów jeśli źle zdefiniowane mmd // prowadzi prosto do wysypów jeśli źle zdefiniowane mmd
iAnimations = 0; // na razie nie ma żadnego iAnimations = 0; // na razie nie ma żadnego
pAnimated = NULL; pAnimated = nullptr;
fShade = 0.0; // standardowe oświetlenie na starcie fShade = 0.0; // standardowe oświetlenie na starcie
iHornWarning = 1; // numer syreny do użycia po otrzymaniu sygnału do jazdy iHornWarning = 1; // numer syreny do użycia po otrzymaniu sygnału do jazdy
asDestination = "none"; // stojący nigdzie nie jedzie asDestination = "none"; // stojący nigdzie nie jedzie
pValveGear = NULL; // Ra: tymczasowo pValveGear = nullptr; // Ra: tymczasowo
iCabs = 0; // maski bitowe modeli kabin iCabs = 0; // maski bitowe modeli kabin
smBrakeSet = NULL; // nastawa hamulca (wajcha) smBrakeSet = nullptr; // nastawa hamulca (wajcha)
smLoadSet = NULL; // nastawa ładunku (wajcha) smLoadSet = nullptr; // nastawa ładunku (wajcha)
smWiper = NULL; // wycieraczka (poniekąd też wajcha) smWiper = nullptr; // wycieraczka (poniekąd też wajcha)
ctOwner = NULL; // na początek niczyj ctOwner = nullptr; // na początek niczyj
iOverheadMask = 0; // maska przydzielana przez AI pojazdom posiadającym iOverheadMask = 0; // maska przydzielana przez AI pojazdom posiadającym
// pantograf, aby wymuszały // pantograf, aby wymuszały
// jazdę bezprądową // jazdę bezprądową
@@ -5246,8 +5198,8 @@ void TDynamicObject::LoadMMediaFile( std::string const &TypeName, std::string co
std::string asFileName = asBaseDir + TypeName + ".mmd"; std::string asFileName = asBaseDir + TypeName + ".mmd";
std::string asAnimName; std::string asAnimName;
bool Stop_InternalData = false; bool Stop_InternalData = false;
pants = NULL; // wskaźnik pierwszego obiektu animującego dla pantografów pants = nullptr; // wskaźnik pierwszego obiektu animującego dla pantografów
wipers = NULL; // wskaznik pierwszego obiektu animujacego dla wycieraczek wipers = nullptr; // wskaznik pierwszego obiektu animujacego dla wycieraczek
{ {
// preliminary check whether the file exists // preliminary check whether the file exists
cParser parser( TypeName + ".mmd", cParser::buffer_FILE, asBaseDir ); cParser parser( TypeName + ".mmd", cParser::buffer_FILE, asBaseDir );
@@ -5507,7 +5459,7 @@ void TDynamicObject::LoadMMediaFile( std::string const &TypeName, std::string co
// m(3)[1]=m[3][1]+0.054; //w górę o wysokość ślizgu (na razie tak) // m(3)[1]=m[3][1]+0.054; //w górę o wysokość ślizgu (na razie tak)
pants[i].fParamPants->vPos.z = m[3][0]; // przesunięcie w bok (asymetria) pants[i].fParamPants->vPos.z = m[3][0]; // przesunięcie w bok (asymetria)
pants[i].fParamPants->vPos.y = m[3][1]; // przesunięcie w górę odczytane z modelu pants[i].fParamPants->vPos.y = m[3][1]; // przesunięcie w górę odczytane z modelu
if ((sm = pants[i].smElement[0]->ChildGet()) != NULL) if ((sm = pants[i].smElement[0]->ChildGet()) != nullptr)
{ // jeśli ma potomny, można policzyć długość (odległość potomnego od osi obrotu) { // jeśli ma potomny, można policzyć długość (odległość potomnego od osi obrotu)
m = float4x4(*sm->GetMatrix()); // wystarczyłby wskaźnik, nie trzeba kopiować m = float4x4(*sm->GetMatrix()); // wystarczyłby wskaźnik, nie trzeba kopiować
// może trzeba: pobrać macierz dolnego ramienia, wyzerować przesunięcie, przemnożyć przez macierz górnego // może trzeba: pobrać macierz dolnego ramienia, wyzerować przesunięcie, przemnożyć przez macierz górnego
@@ -5521,7 +5473,7 @@ void TDynamicObject::LoadMMediaFile( std::string const &TypeName, std::string co
// //normalnie ok. 0.05 // //normalnie ok. 0.05
// pants[i].fParamPants->fAngleL0=pants[i].fParamPants->fAngleL; // pants[i].fParamPants->fAngleL0=pants[i].fParamPants->fAngleL;
pants[i].fParamPants->fAngleL = pants[i].fParamPants->fAngleL0; // początkowy kąt dolnego ramienia pants[i].fParamPants->fAngleL = pants[i].fParamPants->fAngleL0; // początkowy kąt dolnego ramienia
if ((sm = sm->ChildGet()) != NULL) if ((sm = sm->ChildGet()) != nullptr)
{ // jeśli dalej jest ślizg, można policzyć długość górnego ramienia { // jeśli dalej jest ślizg, można policzyć długość górnego ramienia
m = float4x4(*sm->GetMatrix()); // wystarczyłby wskaźnik, m = float4x4(*sm->GetMatrix()); // wystarczyłby wskaźnik,
// nie trzeba kopiować trzeba by uwzględnić macierz dolnego ramienia, żeby uzyskać kąt do poziomu... // nie trzeba kopiować trzeba by uwzględnić macierz dolnego ramienia, żeby uzyskać kąt do poziomu...

View File

@@ -113,7 +113,8 @@ class TAnimPant
float rg1rf{1.f}; // mnoznik obrotu ramienia gornego 1 float rg1rf{1.f}; // mnoznik obrotu ramienia gornego 1
float rg2rf{1.f}; // mnoznik obrotu ramienia gornego 2 float rg2rf{1.f}; // mnoznik obrotu ramienia gornego 2
float slizgrf{1.f}; // mnoznik obrotu slizgacza float slizgrf{1.f}; // mnoznik obrotu slizgacza
void AKP_4E(); void common_pantograph_settings();
void AKP_4E();
void WBL85(); void WBL85();
void DSAx(); void DSAx();
void EC160_200(); void EC160_200();

View File

@@ -594,7 +594,7 @@ TTrain::TTrain()
pMechOffset = glm::dvec3(0, 0, 0); pMechOffset = glm::dvec3(0, 0, 0);
fBlinkTimer = 0; fBlinkTimer = 0;
fHaslerTimer = 0; fHaslerTimer = 0;
DynamicSet(NULL); // ustawia wszystkie mv* DynamicSet(nullptr); // ustawia wszystkie mv*
//----- //-----
pMechSittingPosition = glm::dvec3(0, 0, 0); // ABu: 180404 pMechSittingPosition = glm::dvec3(0, 0, 0); // ABu: 180404
fTachoTimer = 0.0; // włączenie skoków wskazań prędkościomierza fTachoTimer = 0.0; // włączenie skoków wskazań prędkościomierza
@@ -647,7 +647,7 @@ bool TTrain::Init(TDynamicObject *NewDynamicObject, bool e3d)
DynamicSet(NewDynamicObject); DynamicSet(NewDynamicObject);
if (!e3d) if (!e3d)
if (DynamicObject->Mechanik == NULL) if (DynamicObject->Mechanik == nullptr)
return false; return false;
DynamicObject->MechInside = true; DynamicObject->MechInside = true;
@@ -10854,7 +10854,7 @@ void TTrain::DynamicSet(TDynamicObject *d)
} }
mvControlled = DynamicObject->FindPowered()->MoverParameters; mvControlled = DynamicObject->FindPowered()->MoverParameters;
mvSecond = NULL; // gdyby się nic nie znalazło mvSecond = nullptr; // gdyby się nic nie znalazło
if (mvOccupied->Power > 1.0) // dwuczłonowe lub ukrotnienia, żeby nie szukać każdorazowo if (mvOccupied->Power > 1.0) // dwuczłonowe lub ukrotnienia, żeby nie szukać każdorazowo
if (mvOccupied->Couplers[1].Connected ? mvOccupied->Couplers[1].AllowedFlag & coupling::control : false) if (mvOccupied->Couplers[1].Connected ? mvOccupied->Couplers[1].AllowedFlag & coupling::control : false)
{ // gdy jest człon od sprzęgu 1, a sprzęg łączony { // gdy jest człon od sprzęgu 1, a sprzęg łączony

View File

@@ -43,7 +43,7 @@ const int iLewo3[4] = {1, 3, 2, 1}; // segmenty do skręcania w lewo
const int iPrawo3[4] = {-2, -1, -3, -2}; // segmenty do skręcania w prawo const int iPrawo3[4] = {-2, -1, -3, -2}; // segmenty do skręcania w prawo
const int iProsto3[4] = {1, -1, 2, 1}; // segmenty do jazdy prosto const int iProsto3[4] = {1, -1, 2, 1}; // segmenty do jazdy prosto
const int iEnds3[13] = {3, 0, 2, 1, 2, 0, -1, 1, 0, 2, 0, 3, 1}; // numer sąsiedniego toru na końcu segmentu "-1" const int iEnds3[13] = {3, 0, 2, 1, 2, 0, -1, 1, 0, 2, 0, 3, 1}; // numer sąsiedniego toru na końcu segmentu "-1"
TIsolated *TIsolated::pRoot = NULL; TIsolated *TIsolated::pRoot = nullptr;
TTrack::profiles_array TTrack::m_profiles; TTrack::profiles_array TTrack::m_profiles;
TTrack::profiles_map TTrack::m_profilesmap; TTrack::profiles_map TTrack::m_profilesmap;
@@ -1067,7 +1067,7 @@ bool TTrack::AddDynamicObject(TDynamicObject *Dynamic)
// Ra: usunąć po upowszechnieniu się odcinków izolowanych // Ra: usunąć po upowszechnieniu się odcinków izolowanych
if (iCategoryFlag & 0x100) // jeśli usuwaczek if (iCategoryFlag & 0x100) // jeśli usuwaczek
{ {
Dynamic->MyTrack = NULL; // trzeba by to uzależnić od kierunku ruchu... Dynamic->MyTrack = nullptr; // trzeba by to uzależnić od kierunku ruchu...
return true; return true;
} }
if( Global.iMultiplayer ) { if( Global.iMultiplayer ) {
@@ -1839,16 +1839,15 @@ bool TTrack::Switch(int i, float const t, float const d)
{ // 0: rozłączenie sąsiednich torów od obrotnicy { // 0: rozłączenie sąsiednich torów od obrotnicy
if (trPrev) // jeśli jest tor od Point1 obrotnicy if (trPrev) // jeśli jest tor od Point1 obrotnicy
if (iPrevDirection) // 0:dołączony Point1, 1:dołączony Point2 if (iPrevDirection) // 0:dołączony Point1, 1:dołączony Point2
trPrev->trNext = NULL; // rozłączamy od Point2 trPrev->trNext = nullptr; // rozłączamy od Point2
else else
trPrev->trPrev = NULL; // rozłączamy od Point1 trPrev->trPrev = nullptr; // rozłączamy od Point1
if (trNext) // jeśli jest tor od Point2 obrotnicy if (trNext) // jeśli jest tor od Point2 obrotnicy
if (iNextDirection) // 0:dołączony Point1, 1:dołączony Point2 if (iNextDirection) // 0:dołączony Point1, 1:dołączony Point2
trNext->trNext = NULL; // rozłączamy od Point2 trNext->trNext = nullptr; // rozłączamy od Point2
else else
trNext->trPrev = NULL; // rozłączamy od Point1 trNext->trPrev = nullptr; // rozłączamy od Point1
trNext = trPrev = trNext = trPrev = nullptr; // na końcu rozłączamy obrotnicę (wkaźniki do sąsiadów już niepotrzebne)
NULL; // na końcu rozłączamy obrotnicę (wkaźniki do sąsiadów już niepotrzebne)
fVelocity = 0.0; // AI, nie ruszaj się! fVelocity = 0.0; // AI, nie ruszaj się!
if (SwitchExtension->pOwner) if (SwitchExtension->pOwner)
SwitchExtension->pOwner->RaTrackAnimAdd(this); // dodanie do listy animacyjnej SwitchExtension->pOwner->RaTrackAnimAdd(this); // dodanie do listy animacyjnej
@@ -1975,7 +1974,7 @@ void TTrack::RaAnimListAdd(TTrack *t)
else else
{ {
SwitchExtension->pNextAnim = t; SwitchExtension->pNextAnim = t;
t->SwitchExtension->pNextAnim = NULL; // nowo dodawany nie może mieć ogona t->SwitchExtension->pNextAnim = nullptr; // nowo dodawany nie może mieć ogona
} }
} }
}; };
@@ -2155,10 +2154,10 @@ int TTrack::TestPoint(const glm::dvec3 *Point)
switch (eType) switch (eType)
{ {
case tt_Normal: // zwykły odcinek case tt_Normal: // zwykły odcinek
if (trPrev == NULL) if (trPrev == nullptr)
if (Equal(Segment->FastGetPoint_0(), Point)) if (Equal(Segment->FastGetPoint_0(), Point))
return 0; return 0;
if (trNext == NULL) if (trNext == nullptr)
if (Equal(Segment->FastGetPoint_1(), Point)) if (Equal(Segment->FastGetPoint_1(), Point))
return 1; return 1;
break; break;
@@ -2168,14 +2167,14 @@ int TTrack::TestPoint(const glm::dvec3 *Point)
// Ra: TODO: jak się zmieni na bezpośrednie odwołania do segmentow zwrotnicy, // Ra: TODO: jak się zmieni na bezpośrednie odwołania do segmentow zwrotnicy,
// to się wykoleja, ponieważ trNext zależy od przełożenia // to się wykoleja, ponieważ trNext zależy od przełożenia
Switch(0); Switch(0);
if (trPrev == NULL) if (trPrev == nullptr)
// if (Equal(SwitchExtension->Segments[0]->FastGetPoint_0(),Point)) // if (Equal(SwitchExtension->Segments[0]->FastGetPoint_0(),Point))
if (Equal(Segment->FastGetPoint_0(), Point)) if (Equal(Segment->FastGetPoint_0(), Point))
{ {
Switch(state); Switch(state);
return 2; return 2;
} }
if (trNext == NULL) if (trNext == nullptr)
// if (Equal(SwitchExtension->Segments[0]->FastGetPoint_1(),Point)) // if (Equal(SwitchExtension->Segments[0]->FastGetPoint_1(),Point))
if (Equal(Segment->FastGetPoint_1(), Point)) if (Equal(Segment->FastGetPoint_1(), Point))
{ {
@@ -2183,14 +2182,14 @@ int TTrack::TestPoint(const glm::dvec3 *Point)
return 3; return 3;
} }
Switch(1); // można by się pozbyć tego przełączania Switch(1); // można by się pozbyć tego przełączania
if (trPrev == NULL) // Ra: z tym chyba nie potrzeba łączyć if (trPrev == nullptr) // Ra: z tym chyba nie potrzeba łączyć
// if (Equal(SwitchExtension->Segments[1]->FastGetPoint_0(),Point)) // if (Equal(SwitchExtension->Segments[1]->FastGetPoint_0(),Point))
if (Equal(Segment->FastGetPoint_0(), Point)) if (Equal(Segment->FastGetPoint_0(), Point))
{ {
Switch(state); // Switch(0); Switch(state); // Switch(0);
return 4; return 4;
} }
if (trNext == NULL) // TODO: to zależy od przełożenia zwrotnicy if (trNext == nullptr) // TODO: to zależy od przełożenia zwrotnicy
// if (Equal(SwitchExtension->Segments[1]->FastGetPoint_1(),Point)) // if (Equal(SwitchExtension->Segments[1]->FastGetPoint_1(),Point))
if (Equal(Segment->FastGetPoint_1(), Point)) if (Equal(Segment->FastGetPoint_1(), Point))
{ {
@@ -2675,7 +2674,7 @@ TTrack * TTrack::Connected(int s, double &d) const
d = -d; d = -d;
return SwitchExtension->pNexts[1]; return SwitchExtension->pNexts[1];
} }
return NULL; return nullptr;
}; };
// creates rail profile data for current track // creates rail profile data for current track

View File

@@ -74,7 +74,7 @@ TTrack * TTrackFollower::SetCurrentTrack(TTrack *pTrack, int end)
} }
if ((end ? iSegment : -iSegment) < 0) if ((end ? iSegment : -iSegment) < 0)
fDirection = -fDirection; // wtórna zmiana fDirection = -fDirection; // wtórna zmiana
pTrack->SwitchForced(abs(iSegment) - 1, NULL); // wybór zapamiętanego segmentu pTrack->SwitchForced(abs(iSegment) - 1, nullptr); // wybór zapamiętanego segmentu
} }
break; break;
} }