bevy_vr_controller/
input.rs1use bevy::prelude::*;
2
3use crate::movement::PlayerInputState;
4
5#[derive(Resource)]
6pub struct InputMap {
7 pub key_forward: KeyCode,
8 pub key_backward: KeyCode,
9 pub key_left: KeyCode,
10 pub key_right: KeyCode,
11 pub key_jump: KeyCode,
12}
13
14impl Default for InputMap {
15 fn default() -> Self {
16 Self {
17 key_forward: KeyCode::KeyW,
18 key_backward: KeyCode::KeyS,
19 key_left: KeyCode::KeyA,
20 key_right: KeyCode::KeyD,
21 key_jump: KeyCode::Space,
22 }
23 }
24}
25
26pub fn read_keyboard_input(
27 input_map: Res<InputMap>,
28 keys: Res<ButtonInput<KeyCode>>,
29 mut player_state: Query<&mut PlayerInputState>,
30) {
31 for mut state in player_state.iter_mut() {
32 state.forward = keys.pressed(input_map.key_forward);
33 state.backward = keys.pressed(input_map.key_backward);
34 state.left = keys.pressed(input_map.key_left);
35 state.right = keys.pressed(input_map.key_right);
36 state.jump = keys.pressed(input_map.key_jump);
37 }
38}