diff --git a/examples/tools/scene_viewer.rs b/examples/tools/scene_viewer.rs index 65dbd807b6..eceade01f4 100644 --- a/examples/tools/scene_viewer.rs +++ b/examples/tools/scene_viewer.rs @@ -18,21 +18,21 @@ fn main() { println!( " Controls: - MOUSE - Move camera orientation - LClick - Enable mouse movement - WSAD - forward/back/strafe left/right - LShift - 'run' - E - up - Q - down - L - animate light direction - U - toggle shadows - C - cycle through cameras - 5/6 - decrease/increase shadow projection width - 7/8 - decrease/increase shadow projection height - 9/0 - decrease/increase shadow projection near/far + MOUSE - Move camera orientation + LClick/M - Enable mouse movement + WSAD - forward/back/strafe left/right + LShift - 'run' + E - up + Q - down + L - animate light direction + U - toggle shadows + C - cycle through cameras + 5/6 - decrease/increase shadow projection width + 7/8 - decrease/increase shadow projection height + 9/0 - decrease/increase shadow projection near/far - Space - Play/Pause animation - Enter - Cycle through animations + Space - Play/Pause animation + Enter - Cycle through animations " ); App::new() @@ -404,7 +404,8 @@ struct CameraController { pub key_up: KeyCode, pub key_down: KeyCode, pub key_run: KeyCode, - pub key_enable_mouse: MouseButton, + pub mouse_key_enable_mouse: MouseButton, + pub keyboard_key_enable_mouse: KeyCode, pub walk_speed: f32, pub run_speed: f32, pub friction: f32, @@ -426,7 +427,8 @@ impl Default for CameraController { key_up: KeyCode::E, key_down: KeyCode::Q, key_run: KeyCode::LShift, - key_enable_mouse: MouseButton::Left, + mouse_key_enable_mouse: MouseButton::Left, + keyboard_key_enable_mouse: KeyCode::M, walk_speed: 5.0, run_speed: 15.0, friction: 0.5, @@ -442,6 +444,7 @@ fn camera_controller( mut mouse_events: EventReader, mouse_button_input: Res>, key_input: Res>, + mut move_toggled: Local, mut query: Query<(&mut Transform, &mut CameraController), With>, ) { let dt = time.delta_seconds(); @@ -477,6 +480,9 @@ fn camera_controller( if key_input.pressed(options.key_down) { axis_input.y -= 1.0; } + if key_input.just_pressed(options.keyboard_key_enable_mouse) { + *move_toggled = !*move_toggled; + } // Apply movement update if axis_input != Vec3::ZERO { @@ -501,7 +507,7 @@ fn camera_controller( // Handle mouse input let mut mouse_delta = Vec2::ZERO; - if mouse_button_input.pressed(options.key_enable_mouse) { + if mouse_button_input.pressed(options.mouse_key_enable_mouse) || *move_toggled { for mouse_event in mouse_events.iter() { mouse_delta += mouse_event.delta; }