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
	 Troels Jessen
						Troels Jessen