diff --git a/src/main.rs b/src/main.rs index effc9a6..4ffcb8e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -270,19 +270,22 @@ fn main() { } } - // Handle keyboard input + // Handle keyboard input for camera movement and rotation if let Ok(keys) = pressed_keys.lock() { for key in keys.iter() { match key { - // The `VirtualKeyCode` enum is defined here: - // https://docs.rs/winit/0.25.0/winit/event/enum.VirtualKeyCode.html - VirtualKeyCode::A => { - _arbitrary_number += delta_time; - } - VirtualKeyCode::D => { - _arbitrary_number -= delta_time; - } - + // Movement: WASD + Space (up) + LShift (down) + VirtualKeyCode::W => { cam_pos.z -= delta_time; } + VirtualKeyCode::S => { cam_pos.z += delta_time; } + VirtualKeyCode::A => { cam_pos.x -= delta_time; } + VirtualKeyCode::D => { cam_pos.x += delta_time; } + VirtualKeyCode::Space => { cam_pos.y += delta_time; } + VirtualKeyCode::LShift => { cam_pos.y -= delta_time; } + // Rotation: arrow keys for yaw and pitch + VirtualKeyCode::Left => { cam_yaw -= delta_time; } + VirtualKeyCode::Right => { cam_yaw += delta_time; } + VirtualKeyCode::Up => { cam_pitch += delta_time; } + VirtualKeyCode::Down => { cam_pitch -= delta_time; } // default handler: _ => {} }