No wiecie, nie ma czasu za kazdym razem odpalac maszyny od zera, odhamowywac 40 wagonowy sklad. Exe jest kompilowane srednio
2x na minute i testy, stad ta predkosc poczatkowa.
// *****************************************************************************
// Wolane z ground.cpp w TGroundNode::RenderDL()
// *****************************************************************************
int Global::findpassengerdynamic(vector3 PPos, AnsiString asName, AnsiString REL, AnsiString DST, TGroundNode *GN)
{
AnsiString drel, ddst, dnam;
vector3 dpnt;
for (int l = 0; l<255-1; l++) // Jedziemy po tablicy entrypointow...
{
drel = QGlobal::PEP[l].dyntrainnumber;
ddst = QGlobal::PEP[l].dyndestination;
dpnt = QGlobal::PEP[l].point;
dnam = QGlobal::PEP[l].dynname;
float fSquareDist = SquareMagnitude(dpnt - vector3(PPos)); // porownywanie pozycji aktualnego posera z pozycjami wszystkich pojazdow
// Wyszukuje drzwi po drugiej stronie wqagonu prawdopodobnie dlatego, ze akurat ostatnii widziany wpis na liscie tego najblizszego mu
// wagonu byl drzwiami po drugiej stronie
// Powinno byc wyliczenie dystansow do wszystkich drzwi i wybraine najkrotszego?
if ((!GN->bINTRAIN) && (fSquareDist < 200)) // Jezeli odleglosc pasazera do pojadu mniejsza niz 300...
{
if (REL == drel) // Gdy relacja pasazera zgadza sie z numerem pociagu...
{
WriteLog("POSER " + asName + ": " + REL + ", " + DST + ", train: " + drel + " wagon: " + dnam);
GN->bINTRAIN = false; // Wlazi do pociagu
glEnable(GL_LINE_SMOOTH);
glLineWidth(2.02);
glColor3ub(150,10,10);
glBegin(GL_LINES);
glVertex3f(dpnt.x, dpnt.y+0.2, dpnt.z);
glVertex3f(PPos.x, PPos.y+0.2, PPos.z);
glEnd();
return 0;
}
}
}
return 0;
}