diff --git a/scene/scene.cpp b/scene/scene.cpp index 57df3293..21365bd7 100644 --- a/scene/scene.cpp +++ b/scene/scene.cpp @@ -46,11 +46,10 @@ basic_cell::on_click( TAnimModel const *Instance ) { void basic_cell::update_traction( TDynamicObject *Vehicle, int const Pantographindex ) { // Winger 170204 - szukanie trakcji nad pantografami - // TODO: Why glm::make_vec3 and glm::value_ptr? - auto const vFront = glm::make_vec3( glm::value_ptr(Vehicle->VectorFront()) ); // wektor normalny dla płaszczyzny ruchu pantografu - auto const vUp = glm::make_vec3( glm::value_ptr(Vehicle->VectorUp()) ); // wektor pionu pudła (pochylony od pionu na przechyłce) - auto const vLeft = glm::make_vec3( glm::value_ptr(Vehicle->VectorLeft()) ); // wektor odległości w bok (odchylony od poziomu na przechyłce) - auto const position = glm::dvec3 { Vehicle->GetPosition() }; // współrzędne środka pojazdu + auto const vFront = Vehicle->VectorFront(); // wektor normalny dla płaszczyzny ruchu pantografu + auto const vUp = Vehicle->VectorUp(); // wektor pionu pudła (pochylony od pionu na przechyłce) + auto const vLeft = Vehicle->VectorLeft(); // wektor odległości w bok (odchylony od poziomu na przechyłce) + auto const position = Vehicle->GetPosition(); // współrzędne środka pojazdu auto pantograph = Vehicle->pants[ Pantographindex ].fParamPants; auto const pantographposition = position + ( vLeft * pantograph->vPos.z ) + ( vUp * pantograph->vPos.y ) + ( vFront * pantograph->vPos.x ); @@ -519,15 +518,13 @@ basic_cell::find( glm::dvec3 const &Point, float const Radius, bool const Onlyco // finds a path with one of its ends located in specified point. returns: located path and id of the matching endpoint std::tuple basic_cell::find( glm::dvec3 const &Point, TTrack const *Exclude ) const { - - glm::dvec3 point{Point.x, Point.y, Point.z}; // sad workaround until math classes unification // TODO: Is it needed? int endpointid; for( auto *path : m_directories.paths ) { if( path == Exclude ) { continue; } - endpointid = path->TestPoint( &point ); + endpointid = path->TestPoint( &Point ); if( endpointid >= 0 ) { return { path, endpointid }; @@ -692,11 +689,10 @@ basic_section::on_click( TAnimModel const *Instance ) { // legacy method, finds and assigns traction piece(s) to pantographs of provided vehicle void basic_section::update_traction( TDynamicObject *Vehicle, int const Pantographindex ) { - // TODO: Why glm::make_vec3 and glm::value_ptr? - auto const vFront = glm::make_vec3( glm::value_ptr(Vehicle->VectorFront()) ); // wektor normalny dla płaszczyzny ruchu pantografu - auto const vUp = glm::make_vec3( glm::value_ptr(Vehicle->VectorUp()) ); // wektor pionu pudła (pochylony od pionu na przechyłce) - auto const vLeft = glm::make_vec3( glm::value_ptr(Vehicle->VectorLeft()) ); // wektor odległości w bok (odchylony od poziomu na przechyłce) - auto const position = glm::dvec3{ Vehicle->GetPosition() }; // współrzędne środka pojazdu + auto const vFront = Vehicle->VectorFront(); // wektor normalny dla płaszczyzny ruchu pantografu + auto const vUp = Vehicle->VectorUp(); // wektor pionu pudła (pochylony od pionu na przechyłce) + auto const vLeft = Vehicle->VectorLeft(); // wektor odległości w bok (odchylony od poziomu na przechyłce) + auto const position = Vehicle->GetPosition(); // współrzędne środka pojazdu auto pantograph = Vehicle->pants[ Pantographindex ].fParamPants; auto const pantographposition = position + ( vLeft * pantograph->vPos.z ) + ( vUp * pantograph->vPos.y ) + ( vFront * pantograph->vPos.x ); @@ -1061,11 +1057,10 @@ basic_region::update_sounds() { void basic_region::update_traction( TDynamicObject *Vehicle, int const Pantographindex ) { // TODO: convert vectors to transformation matrix and pass them down the chain along with calculated position - // TODO: Why glm::make_vec3 and glm::value_ptr? - auto const vFront = glm::make_vec3( glm::value_ptr(Vehicle->VectorFront()) ); // wektor normalny dla płaszczyzny ruchu pantografu - auto const vUp = glm::make_vec3( glm::value_ptr(Vehicle->VectorUp()) ); // wektor pionu pudła (pochylony od pionu na przechyłce) - auto const vLeft = glm::make_vec3( glm::value_ptr(Vehicle->VectorLeft()) ); // wektor odległości w bok (odchylony od poziomu na przechyłce) - auto const position = glm::dvec3 { Vehicle->GetPosition() }; // współrzędne środka pojazdu + auto const vFront = Vehicle->VectorFront(); // wektor normalny dla płaszczyzny ruchu pantografu + auto const vUp = Vehicle->VectorUp(); // wektor pionu pudła (pochylony od pionu na przechyłce) + auto const vLeft = Vehicle->VectorLeft(); // wektor odległości w bok (odchylony od poziomu na przechyłce) + auto const position = Vehicle->GetPosition(); // współrzędne środka pojazdu auto p = Vehicle->pants[ Pantographindex ].fParamPants; auto const pant0 = position + ( vLeft * p->vPos.z ) + ( vUp * p->vPos.y ) + ( vFront * p->vPos.x ); diff --git a/vehicle/DynObj.cpp b/vehicle/DynObj.cpp index cca459d0..fe4a9933 100644 --- a/vehicle/DynObj.cpp +++ b/vehicle/DynObj.cpp @@ -8744,10 +8744,9 @@ vehicle_table::update( double Deltatime, int Iterationcount ) { // legacy method, checks for presence and height of traction wire for specified vehicle void vehicle_table::update_traction( TDynamicObject *Vehicle ) { - // TODO: Why glm::make_vec3 and glm::value_ptr? - auto const vFront = glm::make_vec3( glm::value_ptr(Vehicle->VectorFront()) ); // wektor normalny dla płaszczyzny ruchu pantografu - auto const vUp = glm::make_vec3( glm::value_ptr(Vehicle->VectorUp()) ); // wektor pionu pudła (pochylony od pionu na przechyłce) - auto const vLeft = glm::make_vec3( glm::value_ptr(Vehicle->VectorLeft()) ); // wektor odległości w bok (odchylony od poziomu na przechyłce) + auto const vFront = Vehicle->VectorFront(); // wektor normalny dla płaszczyzny ruchu pantografu + auto const vUp = Vehicle->VectorUp(); // wektor pionu pudła (pochylony od pionu na przechyłce) + auto const vLeft = Vehicle->VectorLeft(); // wektor odległości w bok (odchylony od poziomu na przechyłce) auto const position = Vehicle->GetPosition(); // współrzędne środka pojazdu for( int pantographindex = 0; pantographindex < Vehicle->iAnimType[ ANIM_PANTS ]; ++pantographindex ) { diff --git a/world/Track.cpp b/world/Track.cpp index eab3cb74..37375b35 100644 --- a/world/Track.cpp +++ b/world/Track.cpp @@ -2087,7 +2087,7 @@ bool TTrack::IsGroupable() return true; }; -bool Equal(glm::dvec3 v1, glm::dvec3 *v2) +bool Equal(const glm::dvec3 v1, const glm::dvec3 *v2) { // sprawdzenie odległości punktów // Ra: powinno być do 100cm wzdłuż toru i ze 2cm w poprzek (na prostej może nie być długiego // kawałka) @@ -2102,7 +2102,7 @@ bool Equal(glm::dvec3 v1, glm::dvec3 *v2) // return (SquareMagnitude(v1-*v2)<0.00012); //0.011^2=0.00012 }; -int TTrack::TestPoint(glm::dvec3 *Point) +int TTrack::TestPoint(const glm::dvec3 *Point) { // sprawdzanie, czy tory można połączyć switch (eType) { diff --git a/world/Track.h b/world/Track.h index 04d78496..26298344 100644 --- a/world/Track.h +++ b/world/Track.h @@ -308,7 +308,7 @@ public: } double WidthTotal(); bool IsGroupable(); - int TestPoint(glm::dvec3 *Point); + int TestPoint(const glm::dvec3 *Point); void MovedUp1(float const dh); void VelocitySet(float v); double VelocityGet();