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

minor camera refactoring, division by zero guards

This commit is contained in:
tmj-fstate
2018-08-03 16:07:50 +02:00
parent ff6bed67a9
commit ec1a625c12
20 changed files with 110 additions and 116 deletions

View File

@@ -241,8 +241,8 @@ void
driver_mode::enter() {
Camera.Init(Global.FreeCameraInit[0], Global.FreeCameraInitAngle[0], ( FreeFlyModeFlag ? TCameraType::tp_Free : TCameraType::tp_Follow ) );
Global.pCamera = &Camera;
Global.pDebugCamera = &DebugCamera;
Global.pCamera = Camera;
Global.pDebugCamera = DebugCamera;
TDynamicObject *nPlayerTrain { (
( Global.asHumanCtrlVehicle != "ghostview" ) ?
@@ -281,7 +281,6 @@ driver_mode::enter() {
FreeFlyModeFlag = true; // Ra: automatycznie włączone latanie
Camera.Type = TCameraType::tp_Free;
DebugCamera = Camera;
Global.DebugCameraPosition = DebugCamera.Pos;
}
// if (!Global.bMultiplayer) //na razie włączone
@@ -345,17 +344,7 @@ driver_mode::on_key( int const Key, int const Scancode, int const Action, int co
}
}
if( ( Key == GLFW_KEY_LEFT_SHIFT )
|| ( Key == GLFW_KEY_LEFT_CONTROL )
|| ( Key == GLFW_KEY_LEFT_ALT )
|| ( Key == GLFW_KEY_RIGHT_SHIFT )
|| ( Key == GLFW_KEY_RIGHT_CONTROL )
|| ( Key == GLFW_KEY_RIGHT_ALT ) ) {
// don't bother passing these
return;
}
if( Action == GLFW_PRESS || Action == GLFW_REPEAT ) {
if( Action == GLFW_PRESS ) {
OnKeyDown( Key );
@@ -414,9 +403,9 @@ driver_mode::update_camera( double const Deltatime ) {
Camera.LookAt = controlled->GetPosition();
}
else {
TDynamicObject *d = std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global.pCameraPosition, 300, false, false ) );
TDynamicObject *d = std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global.pCamera.Pos, 300, false, false ) );
if( !d )
d = std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global.pCameraPosition, 1000, false, false ) ); // dalej szukanie, jesli bliżej nie ma
d = std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global.pCamera.Pos, 1000, false, false ) ); // dalej szukanie, jesli bliżej nie ma
if( d && pDynamicNearest ) {
// jeśli jakiś jest znaleziony wcześniej
@@ -530,8 +519,7 @@ driver_mode::update_camera( double const Deltatime ) {
}
}
// all done, update camera position to the new value
Global.pCameraPosition = Camera.Pos;
Global.DebugCameraPosition = DebugCamera.Pos;
Global.pCamera = Camera;
}
void
@@ -615,7 +603,7 @@ driver_mode::OnKeyDown(int cKey) {
}
else // również przeskakiwanie
{ // Ra: to z tą kamerą (Camera.Pos i Global.pCameraPosition) jest trochę bez sensu
Global.pCameraPosition = Global.FreeCameraInit[ i ]; // nowa pozycja dla generowania obiektów
Global.pCamera.Pos = Global.FreeCameraInit[ i ]; // nowa pozycja dla generowania obiektów
Camera.Init( Global.FreeCameraInit[ i ], Global.FreeCameraInitAngle[ i ], TCameraType::tp_Free ); // przestawienie
}
}
@@ -653,7 +641,7 @@ driver_mode::OnKeyDown(int cKey) {
break;
}
TDynamicObject *tmp = std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global.pCameraPosition, 50, true, false ) );
TDynamicObject *tmp = std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global.pCamera.Pos, 50, true, false ) );
if( tmp != nullptr ) {
@@ -879,9 +867,6 @@ driver_mode::FollowView(bool wycisz) {
train->Dynamic()->ABuSetModelShake( {} );
DistantView(); // przestawienie kamery
//żeby nie bylo numerów z 'fruwajacym' lokiem - konsekwencja bujania pudła
// tu ustawić nową, bo od niej liczą się odległości
Global.pCameraPosition = Camera.Pos;
}
else {
Camera.Pos = train->pMechPosition;
@@ -987,7 +972,6 @@ driver_mode::InOutKey( bool const Near )
DistantView( Near );
}
DebugCamera = Camera;
Global.DebugCameraPosition = DebugCamera.Pos;
}
else
{ // jazda w kabinie