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;
}