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 <kairyuka@gmail.com>
This commit is contained in:
Troels Jessen 2022-05-11 09:31:39 +00:00
parent 94d941661d
commit ae580e58dd

View File

@ -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<MouseMotion>,
mouse_button_input: Res<Input<MouseButton>>,
key_input: Res<Input<KeyCode>>,
mut move_toggled: Local<bool>,
mut query: Query<(&mut Transform, &mut CameraController), With<Camera>>,
) {
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;
}