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
@ -19,7 +19,7 @@ fn main() {
|
|||||||
"
|
"
|
||||||
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
|
||||||
@ -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