Skip to content

Commit ae580e5

Browse files
Troels JessenSheepyhead
Troels Jessen
andcommitted
Added keyboard key to mouse control for scene viewer example (#4411)
# Objective - Added keyboard control for scene_viewer example. Fixes #4407 Co-authored-by: Troels Jessen <[email protected]>
1 parent 94d9416 commit ae580e5

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

examples/tools/scene_viewer.rs

+24-18
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,21 @@ fn main() {
1818
println!(
1919
"
2020
Controls:
21-
MOUSE - Move camera orientation
22-
LClick - Enable mouse movement
23-
WSAD - forward/back/strafe left/right
24-
LShift - 'run'
25-
E - up
26-
Q - down
27-
L - animate light direction
28-
U - toggle shadows
29-
C - cycle through cameras
30-
5/6 - decrease/increase shadow projection width
31-
7/8 - decrease/increase shadow projection height
32-
9/0 - decrease/increase shadow projection near/far
33-
34-
Space - Play/Pause animation
35-
Enter - Cycle through animations
21+
MOUSE - Move camera orientation
22+
LClick/M - Enable mouse movement
23+
WSAD - forward/back/strafe left/right
24+
LShift - 'run'
25+
E - up
26+
Q - down
27+
L - animate light direction
28+
U - toggle shadows
29+
C - cycle through cameras
30+
5/6 - decrease/increase shadow projection width
31+
7/8 - decrease/increase shadow projection height
32+
9/0 - decrease/increase shadow projection near/far
33+
34+
Space - Play/Pause animation
35+
Enter - Cycle through animations
3636
"
3737
);
3838
App::new()
@@ -404,7 +404,8 @@ struct CameraController {
404404
pub key_up: KeyCode,
405405
pub key_down: KeyCode,
406406
pub key_run: KeyCode,
407-
pub key_enable_mouse: MouseButton,
407+
pub mouse_key_enable_mouse: MouseButton,
408+
pub keyboard_key_enable_mouse: KeyCode,
408409
pub walk_speed: f32,
409410
pub run_speed: f32,
410411
pub friction: f32,
@@ -426,7 +427,8 @@ impl Default for CameraController {
426427
key_up: KeyCode::E,
427428
key_down: KeyCode::Q,
428429
key_run: KeyCode::LShift,
429-
key_enable_mouse: MouseButton::Left,
430+
mouse_key_enable_mouse: MouseButton::Left,
431+
keyboard_key_enable_mouse: KeyCode::M,
430432
walk_speed: 5.0,
431433
run_speed: 15.0,
432434
friction: 0.5,
@@ -442,6 +444,7 @@ fn camera_controller(
442444
mut mouse_events: EventReader<MouseMotion>,
443445
mouse_button_input: Res<Input<MouseButton>>,
444446
key_input: Res<Input<KeyCode>>,
447+
mut move_toggled: Local<bool>,
445448
mut query: Query<(&mut Transform, &mut CameraController), With<Camera>>,
446449
) {
447450
let dt = time.delta_seconds();
@@ -477,6 +480,9 @@ fn camera_controller(
477480
if key_input.pressed(options.key_down) {
478481
axis_input.y -= 1.0;
479482
}
483+
if key_input.just_pressed(options.keyboard_key_enable_mouse) {
484+
*move_toggled = !*move_toggled;
485+
}
480486

481487
// Apply movement update
482488
if axis_input != Vec3::ZERO {
@@ -501,7 +507,7 @@ fn camera_controller(
501507

502508
// Handle mouse input
503509
let mut mouse_delta = Vec2::ZERO;
504-
if mouse_button_input.pressed(options.key_enable_mouse) {
510+
if mouse_button_input.pressed(options.mouse_key_enable_mouse) || *move_toggled {
505511
for mouse_event in mouse_events.iter() {
506512
mouse_delta += mouse_event.delta;
507513
}

0 commit comments

Comments
 (0)