bevy_vr_controller/
input.rs

1use 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}