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