mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 02:29:17 +02:00
stl-based origin stack replacement
This commit is contained in:
60
Ground.cpp
60
Ground.cpp
@@ -2046,9 +2046,7 @@ bool TGround::Init(std::string File)
|
|||||||
cParser parser(File, cParser::buffer_FILE, subpath, Global::bLoadTraction);
|
cParser parser(File, cParser::buffer_FILE, subpath, Global::bLoadTraction);
|
||||||
std::string token;
|
std::string token;
|
||||||
|
|
||||||
const int OriginStackMaxDepth = 100; // rozmiar stosu dla zagnieżdżenia origin
|
std::stack<Math3D::vector3> OriginStack; // stos zagnieżdżenia origin
|
||||||
int OriginStackTop = 0;
|
|
||||||
vector3 OriginStack[OriginStackMaxDepth]; // stos zagnieżdżenia origin
|
|
||||||
|
|
||||||
TGroundNode *LastNode = NULL; // do użycia w trainset
|
TGroundNode *LastNode = NULL; // do użycia w trainset
|
||||||
iNumNodes = 0;
|
iNumNodes = 0;
|
||||||
@@ -2222,8 +2220,7 @@ bool TGround::Init(std::string File)
|
|||||||
tmp->evNext2 = RootEvent; // lista wszystkich eventów (m.in. do InitEvents)
|
tmp->evNext2 = RootEvent; // lista wszystkich eventów (m.in. do InitEvents)
|
||||||
RootEvent = tmp;
|
RootEvent = tmp;
|
||||||
if (!found)
|
if (!found)
|
||||||
{ // jeśli nazwa wystąpiła, to do kolejki i wyszukiwarki dodawany jest tylko
|
{ // jeśli nazwa wystąpiła, to do kolejki i wyszukiwarki dodawany jest tylko pierwszy
|
||||||
// pierwszy
|
|
||||||
if (RootEvent->Type != tp_Ignored)
|
if (RootEvent->Type != tp_Ignored)
|
||||||
if (RootEvent->asName.find(
|
if (RootEvent->asName.find(
|
||||||
"onstart") != std::string::npos) // event uruchamiany automatycznie po starcie
|
"onstart") != std::string::npos) // event uruchamiany automatycznie po starcie
|
||||||
@@ -2233,56 +2230,39 @@ bool TGround::Init(std::string File)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// else
|
|
||||||
// if (str==AnsiString("include")) //Tolaris to zrobil wewnatrz parsera
|
|
||||||
// {
|
|
||||||
// Include(Parser);
|
|
||||||
// }
|
|
||||||
else if (str == "rotate")
|
else if (str == "rotate")
|
||||||
{
|
{
|
||||||
// parser.getTokens(3);
|
// parser.getTokens(3);
|
||||||
// parser >> aRotate.x >> aRotate.y >> aRotate.z; //Ra: to potrafi dawać błędne
|
// parser >> aRotate.x >> aRotate.y >> aRotate.z; //Ra: to potrafi dawać błędne rezultaty // ??? how so TODO: investigate
|
||||||
// rezultaty
|
|
||||||
parser.getTokens();
|
parser.getTokens();
|
||||||
parser >> aRotate.x;
|
parser >> aRotate.x;
|
||||||
parser.getTokens();
|
parser.getTokens();
|
||||||
parser >> aRotate.y;
|
parser >> aRotate.y;
|
||||||
parser.getTokens();
|
parser.getTokens();
|
||||||
parser >> aRotate.z;
|
parser >> aRotate.z;
|
||||||
// WriteLog("*** rotate "+AnsiString(aRotate.x)+" "+AnsiString(aRotate.y)+"
|
|
||||||
// "+AnsiString(aRotate.z));
|
|
||||||
}
|
}
|
||||||
else if (str == "origin")
|
else if (str == "origin")
|
||||||
{
|
{
|
||||||
// str=Parser->GetNextSymbol().LowerCase();
|
Math3D::vector3 offset;
|
||||||
// if (str=="begin")
|
parser.getTokens(3);
|
||||||
{
|
parser
|
||||||
if (OriginStackTop >= OriginStackMaxDepth - 1)
|
>> offset.x
|
||||||
{
|
>> offset.y
|
||||||
MessageBox(0, "Origin stack overflow ", "Error", MB_OK);
|
>> offset.z;
|
||||||
break;
|
// sumowanie całkowitego przesunięcia
|
||||||
}
|
OriginStack.emplace(
|
||||||
parser.getTokens(3);
|
offset + (
|
||||||
parser >> OriginStack[OriginStackTop].x >> OriginStack[OriginStackTop].y >>
|
OriginStack.empty() ?
|
||||||
OriginStack[OriginStackTop].z;
|
Math3D::vector3() :
|
||||||
pOrigin += OriginStack[OriginStackTop]; // sumowanie całkowitego przesunięcia
|
OriginStack.top() ) );
|
||||||
OriginStackTop++; // zwiększenie wskaźnika stosu
|
pOrigin = OriginStack.top();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (str == "endorigin")
|
else if (str == "endorigin")
|
||||||
{
|
{
|
||||||
// else
|
OriginStack.pop();
|
||||||
// if (str=="end")
|
pOrigin = ( OriginStack.empty() ?
|
||||||
{
|
Math3D::vector3() :
|
||||||
if (OriginStackTop <= 0)
|
OriginStack.top() );
|
||||||
{
|
|
||||||
MessageBox(0, "Origin stack underflow ", "Error", MB_OK);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
OriginStackTop--; // zmniejszenie wskaźnika stosu
|
|
||||||
pOrigin -= OriginStack[OriginStackTop];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (str == "atmo") // TODO: uporzadkowac gdzie maja byc parametry mgly!
|
else if (str == "atmo") // TODO: uporzadkowac gdzie maja byc parametry mgly!
|
||||||
{ // Ra: ustawienie parametrów OpenGL przeniesione do FirstInit
|
{ // Ra: ustawienie parametrów OpenGL przeniesione do FirstInit
|
||||||
|
|||||||
Reference in New Issue
Block a user