void TutorialGame::update(float delta) { if (my_spaceship) { float target_camera_yaw = my_spaceship->getRotation(); switch(my_spaceship->main_screen_setting) { case MSS_Back: target_camera_yaw += 180; break; case MSS_Left: target_camera_yaw -= 90; break; case MSS_Right: target_camera_yaw += 90; break; default: break; } camera_pitch = 30.0f; const float camera_ship_distance = 420.0f; const float camera_ship_height = 420.0f; sf::Vector2f cameraPosition2D = my_spaceship->getPosition() + sf::vector2FromAngle(target_camera_yaw) * -camera_ship_distance; sf::Vector3f targetCameraPosition(cameraPosition2D.x, cameraPosition2D.y, camera_ship_height); camera_position = camera_position * 0.9f + targetCameraPosition * 0.1f; camera_yaw += sf::angleDifference(camera_yaw, target_camera_yaw) * 0.1f; } }
void ScreenMainScreen::update(float delta) { /* TODO if (game_client && !game_client->isConnected()) { destroy(); disconnectFromServer(); returnToMainMenu(); return; } */ if (my_spaceship) { float target_camera_yaw = my_spaceship->getRotation(); switch(my_spaceship->main_screen_setting) { case MSS_Back: target_camera_yaw += 180; break; case MSS_Left: target_camera_yaw -= 90; break; case MSS_Right: target_camera_yaw += 90; break; default: break; } camera_pitch = 30.0f; const float camera_ship_distance = 420.0f; const float camera_ship_height = 420.0f; sf::Vector2f cameraPosition2D = my_spaceship->getPosition() + sf::vector2FromAngle(target_camera_yaw) * -camera_ship_distance; sf::Vector3f targetCameraPosition(cameraPosition2D.x, cameraPosition2D.y, camera_ship_height); #ifdef DEBUG if (sf::Keyboard::isKeyPressed(sf::Keyboard::Z)) { targetCameraPosition.x = my_spaceship->getPosition().x; targetCameraPosition.y = my_spaceship->getPosition().y; targetCameraPosition.z = 3000.0; camera_pitch = 90.0f; } #endif camera_position = camera_position * 0.9f + targetCameraPosition * 0.1f; camera_yaw += sf::angleDifference(camera_yaw, target_camera_yaw) * 0.1f; switch(my_spaceship->main_screen_setting) { case MSS_Front: case MSS_Back: case MSS_Left: case MSS_Right: viewport->show(); tactical_radar->hide(); long_range_radar->hide(); break; case MSS_Tactical: viewport->hide(); tactical_radar->show(); long_range_radar->hide(); break; case MSS_LongRange: viewport->hide(); tactical_radar->hide(); long_range_radar->show(); break; } } }