16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-18 00:49:19 +02:00

Remove not needed casts, variables and switch from double precission to float precission for some angle vectors

This commit is contained in:
docentYT
2026-04-28 00:51:17 +02:00
parent cba106e22e
commit 623c4f827e
15 changed files with 44 additions and 49 deletions

View File

@@ -387,7 +387,7 @@ openal_renderer::update( double const Deltatime ) {
::alListenerfv( AL_ORIENTATION, reinterpret_cast<ALfloat const *>( orientation ) ); ::alListenerfv( AL_ORIENTATION, reinterpret_cast<ALfloat const *>( orientation ) );
// velocity // velocity
if( Deltatime > 0 ) { if( Deltatime > 0 ) {
auto cameramove { glm::dvec3{ cameraposition - cached_camerapos} }; auto cameramove { cameraposition - cached_camerapos };
cached_camerapos = cameraposition; cached_camerapos = cameraposition;
// intercept sudden user-induced camera jumps... // intercept sudden user-induced camera jumps...
// ...from free fly mode change // ...from free fly mode change

View File

@@ -363,7 +363,7 @@ sound_source::play( int const Flags ) {
if( m_range != -1 ) { if( m_range != -1 ) {
auto const cutoffrange { std::abs( m_range * 5 ) }; auto const cutoffrange { std::abs( m_range * 5 ) };
if( glm::length2( location() - glm::dvec3 { Global.pCamera.Pos } ) > std::min( 2750.f * 2750.f, cutoffrange * cutoffrange ) ) { if( glm::length2( location() - Global.pCamera.Pos ) > std::min( 2750.f * 2750.f, cutoffrange * cutoffrange ) ) {
// while we drop sounds from beyond sensible and/or audible range // while we drop sounds from beyond sensible and/or audible range
// we act as if it was activated normally, meaning no need to include the opening bookend in subsequent calls // we act as if it was activated normally, meaning no need to include the opening bookend in subsequent calls
m_playbeginning = false; m_playbeginning = false;

View File

@@ -29,11 +29,11 @@ std::list<std::weak_ptr<TAnimContainer>> TAnimModel::acAnimList;
TAnimContainer::TAnimContainer() TAnimContainer::TAnimContainer()
{ {
vRotateAngles = glm::dvec3(0.0f, 0.0f, 0.0f); // aktualne kąty obrotu vRotateAngles = glm::vec3(0.0f, 0.0f, 0.0f); // aktualne kąty obrotu
vDesiredAngles = glm::dvec3(0.0f, 0.0f, 0.0f); // docelowe kąty obrotu vDesiredAngles = glm::vec3(0.0f, 0.0f, 0.0f); // docelowe kąty obrotu
fRotateSpeed = 0.0; fRotateSpeed = 0.0;
vTranslation = glm::dvec3(0.0f, 0.0f, 0.0f); // aktualne przesunięcie vTranslation = glm::dvec3(0.0, 0.0, 0.0); // aktualne przesunięcie
vTranslateTo = glm::dvec3(0.0f, 0.0f, 0.0f); // docelowe przesunięcie vTranslateTo = glm::dvec3(0.0, 0.0, 0.0); // docelowe przesunięcie
fTranslateSpeed = 0.0; fTranslateSpeed = 0.0;
fAngleSpeed = 0.0; fAngleSpeed = 0.0;
pSubModel = NULL; pSubModel = NULL;
@@ -48,7 +48,7 @@ bool TAnimContainer::Init(TSubModel *pNewSubModel)
return (pSubModel != NULL); return (pSubModel != NULL);
} }
void TAnimContainer::SetRotateAnim(glm::dvec3 vNewRotateAngles, double fNewRotateSpeed) void TAnimContainer::SetRotateAnim(glm::vec3 vNewRotateAngles, double fNewRotateSpeed)
{ {
vDesiredAngles = vNewRotateAngles; vDesiredAngles = vNewRotateAngles;
fRotateSpeed = fNewRotateSpeed; fRotateSpeed = fNewRotateSpeed;

View File

@@ -51,8 +51,8 @@ class TAnimContainer : std::enable_shared_from_this<TAnimContainer>
friend TAnimModel; friend TAnimModel;
private: private:
glm::dvec3 vRotateAngles; // dla obrotów Eulera glm::vec3 vRotateAngles; // dla obrotów Eulera
glm::dvec3 vDesiredAngles; glm::vec3 vDesiredAngles;
double fRotateSpeed; double fRotateSpeed;
glm::dvec3 vTranslation; glm::dvec3 vTranslation;
glm::dvec3 vTranslateTo; glm::dvec3 vTranslateTo;
@@ -81,7 +81,7 @@ class TAnimContainer : std::enable_shared_from_this<TAnimContainer>
inline inline
std::string NameGet() { std::string NameGet() {
return (pSubModel ? pSubModel->pName : ""); }; return (pSubModel ? pSubModel->pName : ""); };
void SetRotateAnim( glm::dvec3 vNewRotateAngles, double fNewRotateSpeed); void SetRotateAnim( glm::vec3 vNewRotateAngles, double fNewRotateSpeed);
void SetTranslateAnim( glm::dvec3 vNewTranslate, double fNewSpeed); void SetTranslateAnim( glm::dvec3 vNewTranslate, double fNewSpeed);
void AnimSetVMD(double fNewSpeed); void AnimSetVMD(double fNewSpeed);
void PrepareModel(); void PrepareModel();

View File

@@ -3106,17 +3106,16 @@ bool opengl33_renderer::Render(TModel3d *Model, material_data const *Material, f
return true; return true;
} }
bool opengl33_renderer::Render(TModel3d *Model, material_data const *Material, float const Squaredistance, glm::dvec3 const &Position, glm::vec3 const &A) bool opengl33_renderer::Render(TModel3d *Model, material_data const *Material, float const Squaredistance, glm::dvec3 const &Position, glm::vec3 const &Angle)
{ {
glm::dvec3 Angle(A); // TODO: Why copy?
::glPushMatrix(); ::glPushMatrix();
::glTranslated(Position.x, Position.y, Position.z); ::glTranslated(Position.x, Position.y, Position.z);
if (Angle.y != 0.0) if (Angle.y != 0.0)
::glRotated(Angle.y, 0.0, 1.0, 0.0); ::glRotated(Angle.y, 0.f, 1.f, 0.f);
if (Angle.x != 0.0) if (Angle.x != 0.0)
::glRotated(Angle.x, 1.0, 0.0, 0.0); ::glRotated(Angle.x, 1.f, 0.f, 0.f);
if (Angle.z != 0.0) if (Angle.z != 0.0)
::glRotated(Angle.z, 0.0, 0.0, 1.0); ::glRotated(Angle.z, 0.f, 0.f, 1.f);
auto const result = Render(Model, Material, Squaredistance); auto const result = Render(Model, Material, Squaredistance);
@@ -3981,17 +3980,16 @@ bool opengl33_renderer::Render_Alpha(TModel3d *Model, material_data const *Mater
return true; return true;
} }
bool opengl33_renderer::Render_Alpha(TModel3d *Model, material_data const *Material, float const Squaredistance, glm::dvec3 const &Position, glm::vec3 const &A) bool opengl33_renderer::Render_Alpha(TModel3d *Model, material_data const *Material, float const Squaredistance, glm::dvec3 const &Position, glm::vec3 const &Angle)
{ {
glm::dvec3 Angle(A); // TODO: Why copy?
::glPushMatrix(); ::glPushMatrix();
::glTranslated(Position.x, Position.y, Position.z); ::glTranslated(Position.x, Position.y, Position.z);
if (Angle.y != 0.0) if (Angle.y != 0.0)
::glRotated(Angle.y, 0.0, 1.0, 0.0); ::glRotated(Angle.y, 0.f, 1.f, 0.f);
if (Angle.x != 0.0) if (Angle.x != 0.0)
::glRotated(Angle.x, 1.0, 0.0, 0.0); ::glRotated(Angle.x, 1.f, 0.f, 0.f);
if (Angle.z != 0.0) if (Angle.z != 0.0)
::glRotated(Angle.z, 0.0, 0.0, 1.0); ::glRotated(Angle.z, 0.f, 0.f, 1.f);
auto const result = Render_Alpha(Model, Material, Squaredistance); // position is effectively camera offset auto const result = Render_Alpha(Model, Material, Squaredistance); // position is effectively camera offset

View File

@@ -1041,8 +1041,8 @@ opengl_renderer::setup_pass( renderpass_config &Config, rendermode const Mode, f
camera.position() = Global.pCamera.Pos - glm::dvec3 { lightvector }; camera.position() = Global.pCamera.Pos - glm::dvec3 { lightvector };
viewmatrix *= glm::lookAt( viewmatrix *= glm::lookAt(
camera.position(), camera.position(),
glm::dvec3 { Global.pCamera.Pos }, Global.pCamera.Pos,
glm::dvec3 { 0.f, 1.f, 0.f } ); glm::dvec3 { 0, 1, 0 } );
// projection // projection
auto const maphalfsize { std::min( 10.f, Config.draw_range * 0.5f ) }; auto const maphalfsize { std::min( 10.f, Config.draw_range * 0.5f ) };
camera.projection() *= camera.projection() *=

View File

@@ -302,7 +302,7 @@ smoke_source::location() const {
m_offset.x * m_owner.vehicle->VectorLeft() m_offset.x * m_owner.vehicle->VectorLeft()
+ m_offset.y * m_owner.vehicle->VectorUp() + m_offset.y * m_owner.vehicle->VectorUp()
+ m_offset.z * m_owner.vehicle->VectorFront() }; + m_offset.z * m_owner.vehicle->VectorFront() };
location += glm::dvec3{ m_owner.vehicle->GetPosition() }; location += m_owner.vehicle->GetPosition();
break; break;
} }
case owner_type::node: { case owner_type::node: {

View File

@@ -46,7 +46,7 @@ struct global_settings {
TCamera pCamera; // parametry kamery TCamera pCamera; // parametry kamery
TCamera pDebugCamera; TCamera pDebugCamera;
std::array<glm::dvec3, 10> FreeCameraInit; // pozycje kamery std::array<glm::dvec3, 10> FreeCameraInit; // pozycje kamery
std::array<glm::dvec3, 10> FreeCameraInitAngle; std::array<glm::vec3, 10> FreeCameraInitAngle;
int iCameraLast{ -1 }; int iCameraLast{ -1 };
int iSlowMotion{ 0 }; // info o malym FPS: 0-OK, 1-wyłączyć multisampling, 3-promień 1.5km, 7-1km int iSlowMotion{ 0 }; // info o malym FPS: 0-OK, 1-wyłączyć multisampling, 3-promień 1.5km, 7-1km
basic_light DayLight; basic_light DayLight;

View File

@@ -172,7 +172,7 @@ void TCamera::Update()
|| ( true == DebugCameraFlag ) ) { || ( true == DebugCameraFlag ) ) {
// free movement position update // free movement position update
auto movement { Velocity }; auto movement { Velocity };
movement = RotateY(movement, Angle.y); movement = RotateY(movement, (double)Angle.y);
Pos += movement * 5.0 * deltatime; Pos += movement * 5.0 * deltatime;
} }
else { else {
@@ -195,7 +195,7 @@ void TCamera::Update()
movement.y = -movement.y; movement.y = -movement.y;
} }
*/ */
movement = RotateY(movement, Angle.y); movement = RotateY(movement, (double)Angle.y);
m_owneroffset += movement * deltatime; m_owneroffset += movement * deltatime;
} }
@@ -203,19 +203,16 @@ void TCamera::Update()
bool TCamera::SetMatrix( glm::dmat4 &Matrix ) { bool TCamera::SetMatrix( glm::dmat4 &Matrix ) {
Matrix = glm::rotate( Matrix, -Angle.z, glm::dvec3( 0.0, 0.0, 1.0 ) ); // po wyłączeniu tego kręci się pojazd, a sceneria nie Matrix = glm::rotate(Matrix, -(double)Angle.x, glm::dvec3(1, 0, 0));
Matrix = glm::rotate( Matrix, -Angle.x, glm::dvec3( 1.0, 0.0, 0.0 ) ); Matrix = glm::rotate(Matrix, -(double)Angle.y, glm::dvec3(0, 1, 0)); // w zewnętrznym widoku: kierunek patrzenia
Matrix = glm::rotate( Matrix, -Angle.y, glm::dvec3( 0.0, 1.0, 0.0 ) ); // w zewnętrznym widoku: kierunek patrzenia Matrix = glm::rotate(Matrix, -(double)Angle.z, glm::dvec3(0, 0, 1)); // po wyłączeniu tego kręci się pojazd, a sceneria nie
if( ( m_owner != nullptr ) && ( false == DebugCameraFlag ) ) { if( ( m_owner != nullptr ) && ( false == DebugCameraFlag ) ) {
Matrix *= glm::lookAt( Matrix *= glm::lookAt(Pos, glm::dvec3{ LookAt }, glm::dvec3{ vUp } );
glm::dvec3{ Pos },
glm::dvec3{ LookAt },
glm::dvec3{ vUp } );
} }
else { else {
Matrix = glm::translate( Matrix, glm::dvec3{ -Pos } ); // nie zmienia kierunku patrzenia Matrix = glm::translate( Matrix, -Pos ); // nie zmienia kierunku patrzenia
} }
return true; return true;

View File

@@ -25,7 +25,7 @@ class TCamera {
bool SetMatrix(glm::dmat4 &Matrix); bool SetMatrix(glm::dmat4 &Matrix);
void RaLook(); void RaLook();
glm::dvec3 Angle; // pitch, yaw, roll glm::vec3 Angle; // pitch, yaw, roll
glm::dvec3 Pos; // współrzędne obserwatora glm::dvec3 Pos; // współrzędne obserwatora
glm::vec3 LookAt; // współrzędne punktu, na który ma patrzeć glm::vec3 LookAt; // współrzędne punktu, na który ma patrzeć
glm::vec3 vUp; glm::vec3 vUp;
@@ -36,7 +36,7 @@ class TCamera {
private: private:
glm::dvec3 m_moverate; glm::dvec3 m_moverate;
glm::dvec3 m_rotationoffsets; // requested changes to pitch, yaw and roll glm::vec3 m_rotationoffsets; // requested changes to pitch, yaw and roll
}; };

View File

@@ -1511,11 +1511,11 @@ void TDynamicObject::ABuBogies()
// [rad] // [rad]
// bogieRot[0].z=ABuAcos(Axle0.pPosition-Axle3.pPosition); // bogieRot[0].z=ABuAcos(Axle0.pPosition-Axle3.pPosition);
bogieRot[0].z = Axle0.vAngles.z; bogieRot[0].z = Axle0.vAngles.z;
bogieRot[0] = RadToDeg(modelRot - bogieRot[0]); // mnożenie wektora przez stałą bogieRot[0] = glm::degrees(modelRot - bogieRot[0]); // mnożenie wektora przez stałą
smBogie[0]->SetRotateXYZ(bogieRot[0]); smBogie[0]->SetRotateXYZ(bogieRot[0]);
// bogieRot[1].z=ABuAcos(Axle2.pPosition-Axle1.pPosition); // bogieRot[1].z=ABuAcos(Axle2.pPosition-Axle1.pPosition);
bogieRot[1].z = Axle1.vAngles.z; bogieRot[1].z = Axle1.vAngles.z;
bogieRot[1] = RadToDeg(modelRot - bogieRot[1]); bogieRot[1] = glm::degrees(modelRot - bogieRot[1]);
smBogie[1]->SetRotateXYZ(bogieRot[1]); smBogie[1]->SetRotateXYZ(bogieRot[1]);
} }
}; };
@@ -3220,7 +3220,7 @@ bool TDynamicObject::Update(double dt, double dt1)
ErrorLog( ErrorLog(
"Bad traction: " + MoverParameters->Name "Bad traction: " + MoverParameters->Name
+ " lost power for " + to_string( NoVoltTime, 2 ) + " sec. at " + " lost power for " + to_string( NoVoltTime, 2 ) + " sec. at "
+ to_string( glm::dvec3{ vPosition } ) ); + to_string(vPosition) );
} }
} }
} }
@@ -3658,7 +3658,7 @@ bool TDynamicObject::Update(double dt, double dt1)
glm::dvec3 old_pos = vPosition; glm::dvec3 old_pos = vPosition;
Move(dDOMoveLen); Move(dDOMoveLen);
m_future_movement = (glm::dvec3(vPosition) - old_pos) / dt1 * Timer::GetDeltaRenderTime(); m_future_movement = (vPosition - old_pos) / dt1 * Timer::GetDeltaRenderTime();
if (!bEnabled) // usuwane pojazdy nie mają toru if (!bEnabled) // usuwane pojazdy nie mają toru
{ // pojazd do usunięcia { // pojazd do usunięcia
@@ -8141,7 +8141,7 @@ TDynamicObject::update_shake( double const Timedelta ) {
} }
shake *= 0.85; shake *= 0.85;
ShakeState.velocity -= ( shake + ShakeState.velocity * 100.0 ) * ( BaseShake.jolt_scale.x + BaseShake.jolt_scale.y + BaseShake.jolt_scale.z ) / ( 200.0 ); ShakeState.velocity -= ( shake + ShakeState.velocity * 100.0 ) * (double)( BaseShake.jolt_scale.x + BaseShake.jolt_scale.y + BaseShake.jolt_scale.z ) / ( 200.0 );
// McZapkie: // McZapkie:
ShakeState.offset += ShakeState.velocity * Timedelta; ShakeState.offset += ShakeState.velocity * Timedelta;
@@ -8748,7 +8748,7 @@ vehicle_table::update_traction( TDynamicObject *Vehicle ) {
auto const vFront = glm::make_vec3( glm::value_ptr(Vehicle->VectorFront()) ); // wektor normalny dla płaszczyzny ruchu pantografu 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 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 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 position = Vehicle->GetPosition(); // współrzędne środka pojazdu
for( int pantographindex = 0; pantographindex < Vehicle->iAnimType[ ANIM_PANTS ]; ++pantographindex ) { for( int pantographindex = 0; pantographindex < Vehicle->iAnimType[ ANIM_PANTS ]; ++pantographindex ) {
// pętla po pantografach // pętla po pantografach

View File

@@ -204,7 +204,7 @@ public:
TTrackFollower Axle1; // oś z tyłu (od sprzęgu 1) TTrackFollower Axle1; // oś z tyłu (od sprzęgu 1)
int iAxleFirst; // numer pierwszej osi w kierunku ruchu (oś wiążąca pojazd z torem i wyzwalająca eventy) int iAxleFirst; // numer pierwszej osi w kierunku ruchu (oś wiążąca pojazd z torem i wyzwalająca eventy)
float fAxleDist; // rozstaw wózków albo osi do liczenia proporcji zacienienia float fAxleDist; // rozstaw wózków albo osi do liczenia proporcji zacienienia
glm::dvec3 modelRot; // obrot pudła względem świata - do przeanalizowania, czy potrzebne!!! glm::vec3 modelRot; // obrot pudła względem świata - do przeanalizowania, czy potrzebne!!!
TDynamicObject * ABuFindNearestObject(glm::vec3 pos, TTrack *Track, TDynamicObject *MyPointer, int &CouplNr ); TDynamicObject * ABuFindNearestObject(glm::vec3 pos, TTrack *Track, TDynamicObject *MyPointer, int &CouplNr );
glm::dvec3 m_future_movement; glm::dvec3 m_future_movement;
@@ -304,7 +304,7 @@ private:
void toggle_lights(); // switch light levels for registered interior sections void toggle_lights(); // switch light levels for registered interior sections
private: // Ra: ciąg dalszy animacji, dopiero do ogarnięcia private: // Ra: ciąg dalszy animacji, dopiero do ogarnięcia
// ABuWozki 060504 // ABuWozki 060504
glm::dvec3 bogieRot[2]; // Obroty wozkow w/m korpusu glm::vec3 bogieRot[2]; // Obroty wozkow w/m korpusu
TSubModel *smBogie[2]; // Wyszukiwanie max 2 wozkow TSubModel *smBogie[2]; // Wyszukiwanie max 2 wozkow
TSubModel *smWahacze[4]; // wahacze (np. nogi, dźwignia w drezynie) TSubModel *smWahacze[4]; // wahacze (np. nogi, dźwignia w drezynie)
TSubModel *smBrakeMode; // Ra 15-01: nastawa hamulca też TSubModel *smBrakeMode; // Ra 15-01: nastawa hamulca też
@@ -834,8 +834,8 @@ public:
std::pair<double, double> shake_angles() const; std::pair<double, double> shake_angles() const;
// members // members
struct baseshake_config { struct baseshake_config {
glm::dvec3 angle_scale { 0.05, 0.0, 0.1 }; // roll, yaw, pitch glm::vec3 angle_scale { 0.05, 0.0, 0.1 }; // roll, yaw, pitch
glm::dvec3 jolt_scale{0.2, 0.2, 0.1}; glm::vec3 jolt_scale{0.2, 0.2, 0.1};
double jolt_limit { 2.0f }; double jolt_limit { 2.0f };
} BaseShake; } BaseShake;
struct engineshake_config { struct engineshake_config {

View File

@@ -338,7 +338,7 @@ Math3D::vector3 TSegment::GetPoint(double const fDistance) const
}; };
*/ */
// ustalenie pozycji osi na torze, przechyłki, pochylenia i kierunku jazdy // ustalenie pozycji osi na torze, przechyłki, pochylenia i kierunku jazdy
void TSegment::RaPositionGet(double const fDistance, glm::dvec3 &p, glm::dvec3 &a) const { void TSegment::RaPositionGet(double const fDistance, glm::dvec3 &p, glm::vec3 &a) const {
if (bCurve) { if (bCurve) {
// można by wprowadzić uproszczony wzór dla okręgów płaskich // można by wprowadzić uproszczony wzór dla okręgów płaskich
auto const t = GetTFromS(fDistance); // aproksymacja dystansu na krzywej Beziera na parametr (t) auto const t = GetTFromS(fDistance); // aproksymacja dystansu na krzywej Beziera na parametr (t)

View File

@@ -92,7 +92,7 @@ public:
Math3D::vector3 Math3D::vector3
GetPoint(double const fDistance) const; GetPoint(double const fDistance) const;
*/ */
void RaPositionGet(double const fDistance, glm::dvec3 &p, glm::dvec3 &a) const; void RaPositionGet(double const fDistance, glm::dvec3 &p, glm::vec3 &a) const;
glm::dvec3 FastGetPoint(double const t) const; glm::dvec3 FastGetPoint(double const t) const;
inline inline
glm::dvec3 glm::dvec3

View File

@@ -45,7 +45,7 @@ public:
// members // members
double fOffsetH = 0.0; // Ra: odległość środka osi od osi toru (dla samochodów) - użyć do wężykowania double fOffsetH = 0.0; // Ra: odległość środka osi od osi toru (dla samochodów) - użyć do wężykowania
glm::dvec3 pPosition; // współrzędne XYZ w układzie scenerii glm::dvec3 pPosition; // współrzędne XYZ w układzie scenerii
glm::dvec3 vAngles; // x:przechyłka, y:pochylenie, z:kierunek w planie (w radianach) glm::vec3 vAngles; // x:przechyłka, y:pochylenie, z:kierunek w planie (w radianach)
private: private:
// methods // methods
bool ComputatePosition(); // przeliczenie pozycji na torze bool ComputatePosition(); // przeliczenie pozycji na torze