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:
|
||||
MOUSE - Move camera orientation
|
||||
LClick - Enable mouse movement
|
||||
LClick/M - Enable mouse movement
|
||||
WSAD - forward/back/strafe left/right
|
||||
LShift - 'run'
|
||||
E - up
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user