mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-19 14:39:18 +02:00
merge, with tmj renderer
This commit is contained in:
60
Camera.cpp
60
Camera.cpp
@@ -352,7 +352,8 @@ void TCamera::Update()
|
||||
}
|
||||
*/
|
||||
if( ( Type == tp_Free )
|
||||
|| ( false == Global::ctrlState ) ) {
|
||||
|| ( false == Global::ctrlState )
|
||||
|| ( true == DebugCameraFlag) ) {
|
||||
// ctrl is used for mirror view, so we ignore the controls when in vehicle if ctrl is pressed
|
||||
if( m_keys.up )
|
||||
Velocity.y = clamp( Velocity.y + m_moverate.y * 10.0 * deltatime, -m_moverate.y, m_moverate.y );
|
||||
@@ -371,7 +372,8 @@ void TCamera::Update()
|
||||
}
|
||||
#endif
|
||||
|
||||
if( Type == tp_Free ) {
|
||||
if( ( Type == tp_Free )
|
||||
|| ( true == DebugCameraFlag ) ) {
|
||||
// free movement position update is handled here, movement while in vehicle is handled by train update
|
||||
vector3 Vec = Velocity;
|
||||
Vec.RotateY( Yaw );
|
||||
@@ -379,35 +381,10 @@ void TCamera::Update()
|
||||
}
|
||||
}
|
||||
|
||||
vector3 TCamera::GetDirection()
|
||||
{
|
||||
matrix4x4 mat;
|
||||
vector3 Vec;
|
||||
Vec = vector3(0, 0, 1);
|
||||
Vec.RotateY(Yaw);
|
||||
vector3 TCamera::GetDirection() {
|
||||
|
||||
return (Normalize(Vec));
|
||||
}
|
||||
|
||||
bool TCamera::SetMatrix()
|
||||
{
|
||||
glRotated( -Roll * 180.0 / M_PI, 0.0, 0.0, 1.0 ); // po wyłączeniu tego kręci się pojazd, a sceneria nie
|
||||
glRotated( -Pitch * 180.0 / M_PI, 1.0, 0.0, 0.0 );
|
||||
glRotated( -Yaw * 180.0 / M_PI, 0.0, 1.0, 0.0 ); // w zewnętrznym widoku: kierunek patrzenia
|
||||
|
||||
if( Type == tp_Follow )
|
||||
{
|
||||
gluLookAt(
|
||||
Pos.x, Pos.y, Pos.z,
|
||||
LookAt.x, LookAt.y, LookAt.z,
|
||||
vUp.x, vUp.y, vUp.z); // Ra: pOffset is zero
|
||||
}
|
||||
else {
|
||||
glTranslated( -Pos.x, -Pos.y, -Pos.z ); // nie zmienia kierunku patrzenia
|
||||
}
|
||||
|
||||
Global::SetCameraPosition(Pos); // było +pOffset
|
||||
return true;
|
||||
glm::vec3 v = glm::normalize( glm::rotateY<float>( glm::vec3{ 0.f, 0.f, 1.f }, Yaw ) );
|
||||
return vector3(v.x, v.y, v.z);
|
||||
}
|
||||
|
||||
bool TCamera::SetMatrix( glm::dmat4 &Matrix ) {
|
||||
@@ -416,32 +393,20 @@ bool TCamera::SetMatrix( glm::dmat4 &Matrix ) {
|
||||
Matrix = glm::rotate( Matrix, -Pitch, glm::dvec3( 1.0, 0.0, 0.0 ) );
|
||||
Matrix = glm::rotate( Matrix, -Yaw, glm::dvec3( 0.0, 1.0, 0.0 ) ); // w zewnętrznym widoku: kierunek patrzenia
|
||||
|
||||
if( Type == tp_Follow ) {
|
||||
if( ( Type == tp_Follow ) && ( false == DebugCameraFlag ) ) {
|
||||
|
||||
Matrix *= glm::lookAt(
|
||||
glm::dvec3( Pos.x, Pos.y, Pos.z ),
|
||||
glm::dvec3( LookAt.x, LookAt.y, LookAt.z ),
|
||||
glm::dvec3( vUp.x, vUp.y, vUp.z ) );
|
||||
glm::dvec3{ Pos },
|
||||
glm::dvec3{ LookAt },
|
||||
glm::dvec3{ vUp } );
|
||||
}
|
||||
else {
|
||||
Matrix = glm::translate( Matrix, glm::dvec3( -Pos.x, -Pos.y, -Pos.z ) ); // nie zmienia kierunku patrzenia
|
||||
Matrix = glm::translate( Matrix, glm::dvec3{ -Pos } ); // nie zmienia kierunku patrzenia
|
||||
}
|
||||
|
||||
Global::SetCameraPosition( Pos ); // było +pOffset
|
||||
return true;
|
||||
}
|
||||
|
||||
void TCamera::SetCabMatrix(vector3 &p)
|
||||
{ // ustawienie widoku z kamery bez przesunięcia robionego przez OpenGL - nie powinno tak trząść
|
||||
|
||||
glRotated(-Roll * 180.0 / M_PI, 0.0, 0.0, 1.0);
|
||||
glRotated(-Pitch * 180.0 / M_PI, 1.0, 0.0, 0.0);
|
||||
glRotated(-Yaw * 180.0 / M_PI, 0.0, 1.0, 0.0); // w zewnętrznym widoku: kierunek patrzenia
|
||||
if (Type == tp_Follow)
|
||||
gluLookAt(Pos.x - p.x, Pos.y - p.y, Pos.z - p.z, LookAt.x - p.x, LookAt.y - p.y,
|
||||
LookAt.z - p.z, vUp.x, vUp.y, vUp.z); // Ra: pOffset is zero
|
||||
}
|
||||
|
||||
void TCamera::RaLook()
|
||||
{ // zmiana kierunku patrzenia - przelicza Yaw
|
||||
vector3 where = LookAt - Pos + vector3(0, 3, 0); // trochę w górę od szyn
|
||||
@@ -457,4 +422,3 @@ void TCamera::Stop()
|
||||
Type = tp_Follow;
|
||||
Velocity = vector3(0, 0, 0);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user