mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 08:09:19 +02:00
fixed initialization of track classes and basic 3d types
This commit is contained in:
@@ -26,13 +26,13 @@ class Resource
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void SetLastUsage(double lastUsage)
|
void SetLastUsage(double const lastUsage)
|
||||||
{
|
{
|
||||||
_lastUsage = lastUsage;
|
_lastUsage = lastUsage;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double _lastUsage;
|
double _lastUsage = 0.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ResourceManager
|
class ResourceManager
|
||||||
|
|||||||
12
Segment.cpp
12
Segment.cpp
@@ -26,15 +26,11 @@ std::string Where(vector3 p)
|
|||||||
return std::to_string(p.x) + " " + std::to_string(p.y) + " " + std::to_string(p.z);
|
return std::to_string(p.x) + " " + std::to_string(p.y) + " " + std::to_string(p.z);
|
||||||
};
|
};
|
||||||
|
|
||||||
TSegment::TSegment(TTrack *owner)
|
TSegment::TSegment(TTrack *owner) :
|
||||||
|
pOwner( owner )
|
||||||
{
|
{
|
||||||
Point1 = CPointOut = CPointIn = Point2 = vector3(0.0f, 0.0f, 0.0f);
|
fAngle[ 0 ] = 0.0;
|
||||||
fLength = 0;
|
fAngle[ 1 ] = 0.0;
|
||||||
fRoll1 = 0;
|
|
||||||
fRoll2 = 0;
|
|
||||||
fTsBuffer = NULL;
|
|
||||||
fStep = 0;
|
|
||||||
pOwner = owner;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TSegment::~TSegment()
|
TSegment::~TSegment()
|
||||||
|
|||||||
20
Segment.h
20
Segment.h
@@ -52,18 +52,20 @@ class TSegment
|
|||||||
{ // aproksymacja toru (zwrotnica ma dwa takie, jeden z nich jest aktywny)
|
{ // aproksymacja toru (zwrotnica ma dwa takie, jeden z nich jest aktywny)
|
||||||
private:
|
private:
|
||||||
vector3 Point1, CPointOut, CPointIn, Point2;
|
vector3 Point1, CPointOut, CPointIn, Point2;
|
||||||
double fRoll1, fRoll2; // przechyłka na końcach
|
double fRoll1 = 0.0,
|
||||||
double fLength; // długość policzona
|
fRoll2 = 0.0; // przechyłka na końcach
|
||||||
double *fTsBuffer; // wartości parametru krzywej dla równych odcinków
|
double fLength = 0.0; // długość policzona
|
||||||
double fStep;
|
double *fTsBuffer = nullptr; // wartości parametru krzywej dla równych odcinków
|
||||||
int iSegCount; // ilość odcinków do rysowania krzywej
|
double fStep = 0.0;
|
||||||
double fDirection; // Ra: kąt prostego w planie; dla łuku kąt od Point1
|
int iSegCount = 0; // ilość odcinków do rysowania krzywej
|
||||||
double fStoop; // Ra: kąt wzniesienia; dla łuku od Point1
|
double fDirection = 0.0; // Ra: kąt prostego w planie; dla łuku kąt od Point1
|
||||||
|
double fStoop = 0.0; // Ra: kąt wzniesienia; dla łuku od Point1
|
||||||
vector3 vA, vB, vC; // współczynniki wielomianów trzeciego stopnia vD==Point1
|
vector3 vA, vB, vC; // współczynniki wielomianów trzeciego stopnia vD==Point1
|
||||||
// TSegment *pPrev; //odcinek od strony punktu 1 - w segmencie, żeby nie skakać na zwrotnicach
|
// TSegment *pPrev; //odcinek od strony punktu 1 - w segmencie, żeby nie skakać na zwrotnicach
|
||||||
// TSegment *pNext; //odcinek od strony punktu 2
|
// TSegment *pNext; //odcinek od strony punktu 2
|
||||||
TTrack *pOwner; // wskaźnik na właściciela
|
TTrack *pOwner = nullptr; // wskaźnik na właściciela
|
||||||
double fAngle[2]; // kąty zakończenia drogi na przejazdach
|
double fAngle[2]; // kąty zakończenia drogi na przejazdach
|
||||||
|
|
||||||
vector3 GetFirstDerivative(double fTime);
|
vector3 GetFirstDerivative(double fTime);
|
||||||
double RombergIntegral(double fA, double fB);
|
double RombergIntegral(double fA, double fB);
|
||||||
double GetTFromS(double s);
|
double GetTFromS(double s);
|
||||||
@@ -72,7 +74,7 @@ class TSegment
|
|||||||
// TSegment *segNeightbour[2]; //sąsiednie odcinki - musi być przeniesione z Track
|
// TSegment *segNeightbour[2]; //sąsiednie odcinki - musi być przeniesione z Track
|
||||||
// int iNeightbour[2]; //do którego końca doczepiony
|
// int iNeightbour[2]; //do którego końca doczepiony
|
||||||
public:
|
public:
|
||||||
bool bCurve;
|
bool bCurve = false;
|
||||||
// int iShape; //Ra: flagi kształtu dadzą więcej możliwości optymalizacji
|
// int iShape; //Ra: flagi kształtu dadzą więcej możliwości optymalizacji
|
||||||
// (0-Bezier,1-prosty,2/3-łuk w lewo/prawo,6/7-przejściowa w lewo/prawo)
|
// (0-Bezier,1-prosty,2/3-łuk w lewo/prawo,6/7-przejściowa w lewo/prawo)
|
||||||
TSegment(TTrack *owner);
|
TSegment(TTrack *owner);
|
||||||
|
|||||||
78
Track.cpp
78
Track.cpp
@@ -45,20 +45,14 @@ 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"
|
1, 0, 2, 0, 3, 1}; // numer sąsiedniego toru na końcu segmentu "-1"
|
||||||
TIsolated *TIsolated::pRoot = NULL;
|
TIsolated *TIsolated::pRoot = NULL;
|
||||||
|
|
||||||
TSwitchExtension::TSwitchExtension(TTrack *owner, int what)
|
TSwitchExtension::TSwitchExtension(TTrack *owner, int const what)
|
||||||
{ // na początku wszystko puste
|
{ // na początku wszystko puste
|
||||||
CurrentIndex = 0;
|
pNexts[0] = nullptr; // wskaźniki do kolejnych odcinków ruchu
|
||||||
pNexts[0] = NULL; // wskaźniki do kolejnych odcinków ruchu
|
pNexts[1] = nullptr;
|
||||||
pNexts[1] = NULL;
|
pPrevs[0] = nullptr;
|
||||||
pPrevs[0] = NULL;
|
pPrevs[1] = nullptr;
|
||||||
pPrevs[1] = NULL;
|
|
||||||
fOffsetSpeed = 0.1; // prędkość liniowa iglic
|
|
||||||
fOffsetDelay = 0.05; // dodatkowy ruch drugiej iglicy po zablokowaniu pierwszej na opornicy
|
|
||||||
fOffset1 = fOffset = fDesiredOffset = -fOffsetDelay; // położenie zasadnicze
|
fOffset1 = fOffset = fDesiredOffset = -fOffsetDelay; // położenie zasadnicze
|
||||||
fOffset2 = 0.0; // w zasadniczym wewnętrzna iglica dolega
|
fOffset2 = 0.0; // w zasadniczym wewnętrzna iglica dolega
|
||||||
pOwner = NULL;
|
|
||||||
pNextAnim = NULL;
|
|
||||||
bMovement = false; // nie potrzeba przeliczać fOffset1
|
|
||||||
Segments[0] = std::make_shared<TSegment>(owner); // z punktu 1 do 2
|
Segments[0] = std::make_shared<TSegment>(owner); // z punktu 1 do 2
|
||||||
Segments[1] = std::make_shared<TSegment>(owner); // z punktu 3 do 4 (1=3 dla zwrotnic; odwrócony dla skrzyżowań, ewentualnie 1=4)
|
Segments[1] = std::make_shared<TSegment>(owner); // z punktu 3 do 4 (1=3 dla zwrotnic; odwrócony dla skrzyżowań, ewentualnie 1=4)
|
||||||
Segments[2] = (what >= 3) ?
|
Segments[2] = (what >= 3) ?
|
||||||
@@ -73,9 +67,6 @@ TSwitchExtension::TSwitchExtension(TTrack *owner, int what)
|
|||||||
Segments[5] = (what >= 6) ?
|
Segments[5] = (what >= 6) ?
|
||||||
std::make_shared<TSegment>(owner) :
|
std::make_shared<TSegment>(owner) :
|
||||||
nullptr; // z punktu 3 do 2 2 2 1 1
|
nullptr; // z punktu 3 do 2 2 2 1 1
|
||||||
evPlus = evMinus = NULL;
|
|
||||||
fVelocity = -1.0; // maksymalne ograniczenie prędkości (ustawianej eventem)
|
|
||||||
vTrans = vector3(0, 0, 0); // docelowa translacja przesuwnicy
|
|
||||||
}
|
}
|
||||||
TSwitchExtension::~TSwitchExtension()
|
TSwitchExtension::~TSwitchExtension()
|
||||||
{ // nie ma nic do usuwania
|
{ // nie ma nic do usuwania
|
||||||
@@ -153,56 +144,15 @@ void TIsolated::Modify(int i, TDynamicObject *o)
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TTrack::TTrack(TGroundNode *g)
|
// tworzenie nowego odcinka ruchu
|
||||||
{ // tworzenie nowego odcinka ruchu
|
TTrack::TTrack(TGroundNode *g) :
|
||||||
trNext = trPrev = NULL; // sąsiednie
|
pMyNode( g ) // Ra: proteza, żeby tor znał swoją nazwę TODO: odziedziczyć TTrack z TGroundNode
|
||||||
Segment = NULL; // dane odcinka
|
{
|
||||||
SwitchExtension = NULL; // dodatkowe parametry zwrotnicy i obrotnicy
|
::SecureZeroMemory( Dynamics, sizeof( Dynamics ) );
|
||||||
TextureID1 = 0; // tekstura szyny
|
fRadiusTable[ 0 ] = 0.0;
|
||||||
fTexLength = 4.0; // powtarzanie tekstury
|
fRadiusTable[ 1 ] = 0.0;
|
||||||
TextureID2 = 0; // tekstura podsypki albo drugiego toru zwrotnicy
|
nFouling[ 0 ] = nullptr;
|
||||||
fTexHeight1 = 0.6; // nowy profil podsypki ;)
|
nFouling[ 1 ] = nullptr;
|
||||||
fTexWidth = 0.9;
|
|
||||||
fTexSlope = 0.9;
|
|
||||||
eType = tt_Normal; // domyślnie zwykły
|
|
||||||
iCategoryFlag = 1; // 1-tor, 2-droga, 4-rzeka, 8-samolot?
|
|
||||||
fTrackWidth = 1.435; // rozstaw toru, szerokość nawierzchni
|
|
||||||
fFriction = 0.15; // współczynnik tarcia
|
|
||||||
fSoundDistance = -1;
|
|
||||||
iQualityFlag = 20;
|
|
||||||
iDamageFlag = 0;
|
|
||||||
eEnvironment = e_flat;
|
|
||||||
bVisible = true;
|
|
||||||
iEvents = 0; // Ra: flaga informująca o obecności eventów
|
|
||||||
evEvent0 = NULL;
|
|
||||||
evEvent1 = NULL;
|
|
||||||
evEvent2 = NULL;
|
|
||||||
evEventall0 = NULL;
|
|
||||||
evEventall1 = NULL;
|
|
||||||
evEventall2 = NULL;
|
|
||||||
fVelocity = -1; // ograniczenie prędkości
|
|
||||||
fTrackLength = 100.0;
|
|
||||||
fRadius = 0; // promień wybranego toru zwrotnicy
|
|
||||||
fRadiusTable[0] = 0; // dwa promienie nawet dla prostego
|
|
||||||
fRadiusTable[1] = 0;
|
|
||||||
iNumDynamics = 0;
|
|
||||||
ScannedFlag = false;
|
|
||||||
DisplayListID = 0;
|
|
||||||
iTrapezoid = 0; // parametry kształtu: 0-standard, 1-przechyłka, 2-trapez, 3-oba
|
|
||||||
hvOverhead = NULL; // drut zasilający, najbliższy Point1 toru
|
|
||||||
fTexRatio1 =
|
|
||||||
1.0; // proporcja boków tekstury nawierzchni (żeby zaoszczędzić na rozmiarach tekstur...)
|
|
||||||
fTexRatio2 =
|
|
||||||
1.0; // proporcja boków tekstury chodnika (żeby zaoszczędzić na rozmiarach tekstur...)
|
|
||||||
iPrevDirection = 0; // domyślnie wirtualne odcinki dołączamy stroną od Point1
|
|
||||||
iNextDirection = 0;
|
|
||||||
pIsolated = NULL;
|
|
||||||
pMyNode = g; // Ra: proteza, żeby tor znał swoją nazwę TODO: odziedziczyć TTrack z TGroundNode
|
|
||||||
iAction = 0; // normalnie może być pomijany podczas skanowania
|
|
||||||
fOverhead = -1.0; // można normalnie pobierać prąd (0 dla jazdy bezprądowej po danym odcinku
|
|
||||||
nFouling[0] = NULL; // ukres albo kozioł od strony Point1
|
|
||||||
nFouling[1] = NULL; // ukres albo kozioł od strony Point2
|
|
||||||
trColides = NULL; // tor kolizyjny, na którym trzeba sprawdzać pojazdy pod kątem zderzenia
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TTrack::~TTrack()
|
TTrack::~TTrack()
|
||||||
|
|||||||
120
Track.h
120
Track.h
@@ -46,25 +46,26 @@ class TTraction;
|
|||||||
class TSwitchExtension
|
class TSwitchExtension
|
||||||
{ // dodatkowe dane do toru, który jest zwrotnicą
|
{ // dodatkowe dane do toru, który jest zwrotnicą
|
||||||
public:
|
public:
|
||||||
TSwitchExtension(TTrack *owner, int what);
|
TSwitchExtension(TTrack *owner, int const what);
|
||||||
~TSwitchExtension();
|
~TSwitchExtension();
|
||||||
std::shared_ptr<TSegment> Segments[6]; // dwa tory od punktu 1, pozosta³e dwa od 2? Ra 140101: 6 po³¹czeñ dla
|
std::shared_ptr<TSegment> Segments[6]; // dwa tory od punktu 1, pozosta³e dwa od 2? Ra 140101: 6 po³¹czeñ dla skrzy¿owañ
|
||||||
// skrzy¿owañ
|
|
||||||
// TTrack *trNear[4]; //tory do³¹czone do punktów 1, 2, 3 i 4
|
// TTrack *trNear[4]; //tory do³¹czone do punktów 1, 2, 3 i 4
|
||||||
// dotychczasowe [2]+[2] wskaŸniki zamieniæ na nowe [4]
|
// dotychczasowe [2]+[2] wskaŸniki zamieniæ na nowe [4]
|
||||||
TTrack *pNexts[2]; // tory do³¹czone do punktów 2 i 4
|
TTrack *pNexts[2]; // tory do³¹czone do punktów 2 i 4
|
||||||
TTrack *pPrevs[2]; // tory do³¹czone do punktów 1 i 3
|
TTrack *pPrevs[2]; // tory do³¹czone do punktów 1 i 3
|
||||||
int iNextDirection[2]; // to te¿ z [2]+[2] przerobiæ na [4]
|
int iNextDirection[2]; // to te¿ z [2]+[2] przerobiæ na [4]
|
||||||
int iPrevDirection[2];
|
int iPrevDirection[2];
|
||||||
int CurrentIndex; // dla zwrotnicy
|
int CurrentIndex = 0; // dla zwrotnicy
|
||||||
double fOffset, fDesiredOffset; // aktualne i docelowe położenie napędu iglic
|
double fOffset = 0.0,
|
||||||
double fOffsetSpeed; // prędkość liniowa ruchu iglic
|
fDesiredOffset = 0.0; // aktualne i docelowe położenie napędu iglic
|
||||||
double fOffsetDelay; // opóźnienie ruchu drugiej iglicy względem pierwszej
|
double fOffsetSpeed = 0.1; // prędkość liniowa ruchu iglic
|
||||||
|
double fOffsetDelay = 0.05; // opóźnienie ruchu drugiej iglicy względem pierwszej // dodatkowy ruch drugiej iglicy po zablokowaniu pierwszej na opornicy
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{ // zmienne potrzebne tylko dla zwrotnicy
|
{ // zmienne potrzebne tylko dla zwrotnicy
|
||||||
double fOffset1, fOffset2; // przesunięcia iglic - 0=na wprost
|
double fOffset1,
|
||||||
|
fOffset2; // przesunięcia iglic - 0=na wprost
|
||||||
bool RightSwitch; // czy zwrotnica w prawo
|
bool RightSwitch; // czy zwrotnica w prawo
|
||||||
};
|
};
|
||||||
struct
|
struct
|
||||||
@@ -81,12 +82,14 @@ class TSwitchExtension
|
|||||||
int iRoads; // ile dróg się spotyka?
|
int iRoads; // ile dróg się spotyka?
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
bool bMovement; // czy w trakcie animacji
|
bool bMovement = false; // czy w trakcie animacji
|
||||||
int iLeftVBO, iRightVBO; // indeksy iglic w VBO
|
int iLeftVBO = 0,
|
||||||
TSubRect *pOwner; // sektor, któremu trzeba zgłosić animację
|
iRightVBO = 0; // indeksy iglic w VBO
|
||||||
TTrack *pNextAnim; // następny tor do animowania
|
TSubRect *pOwner = nullptr; // sektor, któremu trzeba zgłosić animację
|
||||||
TEvent *evPlus, *evMinus; // zdarzenia sygnalizacji rozprucia
|
TTrack *pNextAnim = nullptr; // następny tor do animowania
|
||||||
float fVelocity; // maksymalne ograniczenie prędkości (ustawianej eventem)
|
TEvent *evPlus = nullptr,
|
||||||
|
*evMinus = nullptr; // zdarzenia sygnalizacji rozprucia
|
||||||
|
float fVelocity = -1.0; // maksymalne ograniczenie prędkości (ustawianej eventem)
|
||||||
vector3 vTrans; // docelowa translacja przesuwnicy
|
vector3 vTrans; // docelowa translacja przesuwnicy
|
||||||
private:
|
private:
|
||||||
};
|
};
|
||||||
@@ -128,64 +131,63 @@ class TTrack : public Resource
|
|||||||
private:
|
private:
|
||||||
std::shared_ptr<TSwitchExtension> SwitchExtension; // dodatkowe dane do toru, który jest zwrotnicą
|
std::shared_ptr<TSwitchExtension> SwitchExtension; // dodatkowe dane do toru, który jest zwrotnicą
|
||||||
std::shared_ptr<TSegment> Segment;
|
std::shared_ptr<TSegment> Segment;
|
||||||
TTrack *trNext; // odcinek od strony punktu 2 - to powinno być w segmencie
|
TTrack *trNext = nullptr; // odcinek od strony punktu 2 - to powinno być w segmencie
|
||||||
TTrack *trPrev; // odcinek od strony punktu 1
|
TTrack *trPrev = nullptr; // odcinek od strony punktu 1
|
||||||
// McZapkie-070402: dodalem zmienne opisujace rozmiary tekstur
|
// McZapkie-070402: dodalem zmienne opisujace rozmiary tekstur
|
||||||
GLuint TextureID1; // tekstura szyn albo nawierzchni
|
GLuint TextureID1 = 0; // tekstura szyn albo nawierzchni
|
||||||
GLuint TextureID2; // tekstura automatycznej podsypki albo pobocza
|
GLuint TextureID2 = 0; // tekstura automatycznej podsypki albo pobocza
|
||||||
float fTexLength; // długość powtarzania tekstury w metrach
|
float fTexLength = 4.0; // długość powtarzania tekstury w metrach
|
||||||
float fTexRatio1; // proporcja rozmiarów tekstury dla nawierzchni drogi
|
float fTexRatio1 = 1.0; // proporcja boków tekstury nawierzchni (żeby zaoszczędzić na rozmiarach tekstur...)
|
||||||
float fTexRatio2; // proporcja rozmiarów tekstury dla chodnika
|
float fTexRatio2 = 1.0; // proporcja boków tekstury chodnika (żeby zaoszczędzić na rozmiarach tekstur...)
|
||||||
float fTexHeight1; // wysokość brzegu względem trajektorii
|
float fTexHeight1 = 0.6; // wysokość brzegu względem trajektorii
|
||||||
float fTexWidth; // szerokość boku
|
float fTexWidth = 0.9; // szerokość boku
|
||||||
float fTexSlope;
|
float fTexSlope = 0.9;
|
||||||
double fRadiusTable[2]; // dwa promienie, drugi dla zwrotnicy
|
double fRadiusTable[ 2 ]; // dwa promienie, drugi dla zwrotnicy
|
||||||
int iTrapezoid; // 0-standard, 1-przechyłka, 2-trapez, 3-oba
|
int iTrapezoid = 0; // 0-standard, 1-przechyłka, 2-trapez, 3-oba
|
||||||
GLuint DisplayListID;
|
GLuint DisplayListID = 0;
|
||||||
TIsolated *pIsolated; // obwód izolowany obsługujący zajęcia/zwolnienia grupy torów
|
TIsolated *pIsolated = nullptr; // obwód izolowany obsługujący zajęcia/zwolnienia grupy torów
|
||||||
TGroundNode *
|
TGroundNode *
|
||||||
pMyNode; // Ra: proteza, żeby tor znał swoją nazwę TODO: odziedziczyć TTrack z TGroundNode
|
pMyNode = nullptr; // Ra: proteza, żeby tor znał swoją nazwę TODO: odziedziczyć TTrack z TGroundNode
|
||||||
public:
|
public:
|
||||||
int iNumDynamics;
|
int iNumDynamics = 0;
|
||||||
TDynamicObject *Dynamics[iMaxNumDynamics];
|
TDynamicObject *Dynamics[iMaxNumDynamics];
|
||||||
int iEvents; // Ra: flaga informująca o obecności eventów
|
int iEvents = 0; // Ra: flaga informująca o obecności eventów
|
||||||
TEvent *evEventall0; // McZapkie-140302: wyzwalany gdy pojazd stoi
|
TEvent *evEventall0 = nullptr; // McZapkie-140302: wyzwalany gdy pojazd stoi
|
||||||
TEvent *evEventall1;
|
TEvent *evEventall1 = nullptr;
|
||||||
TEvent *evEventall2;
|
TEvent *evEventall2 = nullptr;
|
||||||
TEvent *evEvent0; // McZapkie-280503: wyzwalany tylko gdy headdriver
|
TEvent *evEvent0 = nullptr; // McZapkie-280503: wyzwalany tylko gdy headdriver
|
||||||
TEvent *evEvent1;
|
TEvent *evEvent1 = nullptr;
|
||||||
TEvent *evEvent2;
|
TEvent *evEvent2 = nullptr;
|
||||||
std::string asEventall0Name; // nazwy eventów
|
std::string asEventall0Name; // nazwy eventów
|
||||||
std::string asEventall1Name;
|
std::string asEventall1Name;
|
||||||
std::string asEventall2Name;
|
std::string asEventall2Name;
|
||||||
std::string asEvent0Name;
|
std::string asEvent0Name;
|
||||||
std::string asEvent1Name;
|
std::string asEvent1Name;
|
||||||
std::string asEvent2Name;
|
std::string asEvent2Name;
|
||||||
int iNextDirection; // 0:Point1, 1:Point2, 3:do odchylonego na zwrotnicy
|
int iNextDirection = 0; // 0:Point1, 1:Point2, 3:do odchylonego na zwrotnicy
|
||||||
int iPrevDirection;
|
int iPrevDirection = 0; // domyślnie wirtualne odcinki dołączamy stroną od Point1
|
||||||
TTrackType eType;
|
TTrackType eType = tt_Normal; // domyślnie zwykły
|
||||||
int iCategoryFlag; // 0x100 - usuwanie pojazów
|
int iCategoryFlag = 1; // 0x100 - usuwanie pojazów // 1-tor, 2-droga, 4-rzeka, 8-samolot?
|
||||||
float fTrackWidth; // szerokość w punkcie 1
|
float fTrackWidth = 1.435; // szerokość w punkcie 1 // rozstaw toru, szerokość nawierzchni
|
||||||
float fTrackWidth2; // szerokość w punkcie 2 (głównie drogi i rzeki)
|
float fTrackWidth2 = 0.0; // szerokość w punkcie 2 (głównie drogi i rzeki)
|
||||||
float fFriction; // współczynnik tarcia
|
float fFriction = 0.15; // współczynnik tarcia
|
||||||
float fSoundDistance;
|
float fSoundDistance = -1.0;
|
||||||
int iQualityFlag;
|
int iQualityFlag = 20;
|
||||||
int iDamageFlag;
|
int iDamageFlag = 0;
|
||||||
TEnvironmentType eEnvironment; // dźwięk i oświetlenie
|
TEnvironmentType eEnvironment = e_flat; // dźwięk i oświetlenie
|
||||||
bool bVisible; // czy rysowany
|
bool bVisible = true; // czy rysowany
|
||||||
int iAction; // czy modyfikowany eventami (specjalna obsługa przy skanowaniu)
|
int iAction = 0; // czy modyfikowany eventami (specjalna obsługa przy skanowaniu)
|
||||||
float fOverhead; // informacja o stanie sieci: 0-jazda bezprądowa, >0-z opuszczonym i
|
float fOverhead = -1.0; // można normalnie pobierać prąd (0 dla jazdy bezprądowej po danym odcinku, >0-z opuszczonym i ograniczeniem prędkości)
|
||||||
// ograniczeniem prędkości
|
|
||||||
private:
|
private:
|
||||||
double fVelocity; // prędkość dla AI (powyżej rośnie prawdopowobieństwo wykolejenia)
|
double fVelocity = -1.0; // ograniczenie prędkości // prędkość dla AI (powyżej rośnie prawdopowobieństwo wykolejenia)
|
||||||
public:
|
public:
|
||||||
// McZapkie-100502:
|
// McZapkie-100502:
|
||||||
double fTrackLength; // długość z wpisu, nigdzie nie używana
|
double fTrackLength = 100.0; // długość z wpisu, nigdzie nie używana
|
||||||
double fRadius; // promień, dla zwrotnicy kopiowany z tabeli
|
double fRadius = 0.0; // promień, dla zwrotnicy kopiowany z tabeli
|
||||||
bool ScannedFlag; // McZapkie: do zaznaczania kolorem torów skanowanych przez AI
|
bool ScannedFlag = false; // McZapkie: do zaznaczania kolorem torów skanowanych przez AI
|
||||||
TTraction *hvOverhead; // drut zasilający do szybkiego znalezienia (nie używany)
|
TTraction *hvOverhead = nullptr; // drut zasilający do szybkiego znalezienia (nie używany)
|
||||||
TGroundNode *nFouling[2]; // współrzędne ukresu albo oporu kozła
|
TGroundNode *nFouling[ 2 ]; // współrzędne ukresu albo oporu kozła
|
||||||
TTrack *trColides; // tor kolizyjny, na którym trzeba sprawdzać pojazdy pod kątem zderzenia
|
TTrack *trColides = nullptr; // tor kolizyjny, na którym trzeba sprawdzać pojazdy pod kątem zderzenia
|
||||||
|
|
||||||
TTrack(TGroundNode *g);
|
TTrack(TGroundNode *g);
|
||||||
~TTrack();
|
~TTrack();
|
||||||
|
|||||||
7
dumb3d.h
7
dumb3d.h
@@ -42,7 +42,8 @@ inline scalar_t SQRT_FUNCTION(scalar_t x)
|
|||||||
class vector2
|
class vector2
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
vector2(void)
|
vector2(void) :
|
||||||
|
x(0.0), y(0.0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
vector2(scalar_t a, scalar_t b)
|
vector2(scalar_t a, scalar_t b)
|
||||||
@@ -61,7 +62,8 @@ class vector2
|
|||||||
class vector3
|
class vector3
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
vector3(void)
|
vector3(void) :
|
||||||
|
x(0.0), y(0.0), z(0.0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
vector3(scalar_t a, scalar_t b, scalar_t c)
|
vector3(scalar_t a, scalar_t b, scalar_t c)
|
||||||
@@ -129,6 +131,7 @@ class matrix4x4
|
|||||||
public:
|
public:
|
||||||
matrix4x4(void)
|
matrix4x4(void)
|
||||||
{
|
{
|
||||||
|
::SecureZeroMemory( e, sizeof( e ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// When defining matrices in C arrays, it is easiest to define them with
|
// When defining matrices in C arrays, it is easiest to define them with
|
||||||
|
|||||||
Reference in New Issue
Block a user