diff --git a/src/Camera.cpp b/src/Camera.cpp index 8534f3e..b3bba55 100644 --- a/src/Camera.cpp +++ b/src/Camera.cpp @@ -12,6 +12,20 @@ Camera::Camera(float fov, float aspectRatio, float nearPlane, float farPlane) yaw = -90.0f; pitch = -10.0f; // Look down 10 degrees + // Save initial state for reset + initialPosition = position; + initialYaw = yaw; + initialPitch = pitch; + initialFov = fov; + + updateCameraVectors(); +} + +void Camera::reset() { + position = initialPosition; + yaw = initialYaw; + pitch = initialPitch; + fov = initialFov; updateCameraVectors(); } diff --git a/src/Camera.h b/src/Camera.h index f747d90..35841c5 100644 --- a/src/Camera.h +++ b/src/Camera.h @@ -17,6 +17,9 @@ class Camera { // Update camera void update(float deltaTime); + // Reset camera to initial state + void reset(); + // Input handling void processKeyboard(GLFWwindow* window, float deltaTime); void processMouseMovement(float xOffset, float yOffset); @@ -49,6 +52,12 @@ class Camera { float yaw; float pitch; + // Initial state for reset + glm::vec3 initialPosition; + float initialYaw; + float initialPitch; + float initialFov; + // Projection parameters float aspectRatio; float nearPlane; diff --git a/src/main.cpp b/src/main.cpp index c4bc349..25c0914 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -296,6 +296,13 @@ class RacingEngine { if (key == GLFW_KEY_D && action == GLFW_RELEASE) { engine->denoiserKeyPressed = false; } + + // R key to reset camera + if (key == GLFW_KEY_R && action == GLFW_PRESS) { + engine->camera.reset(); + engine->logger.log("\n[CAMERA] Reset to default view\n"); + engine->updateWindowTitle(); + } } void initVulkan() {