Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_gilrs/src/converter.rs
6601 views
1
use bevy_input::gamepad::{GamepadAxis, GamepadButton};
2
3
pub fn convert_button(button: gilrs::Button) -> Option<GamepadButton> {
4
match button {
5
gilrs::Button::South => Some(GamepadButton::South),
6
gilrs::Button::East => Some(GamepadButton::East),
7
gilrs::Button::North => Some(GamepadButton::North),
8
gilrs::Button::West => Some(GamepadButton::West),
9
gilrs::Button::C => Some(GamepadButton::C),
10
gilrs::Button::Z => Some(GamepadButton::Z),
11
gilrs::Button::LeftTrigger => Some(GamepadButton::LeftTrigger),
12
gilrs::Button::LeftTrigger2 => Some(GamepadButton::LeftTrigger2),
13
gilrs::Button::RightTrigger => Some(GamepadButton::RightTrigger),
14
gilrs::Button::RightTrigger2 => Some(GamepadButton::RightTrigger2),
15
gilrs::Button::Select => Some(GamepadButton::Select),
16
gilrs::Button::Start => Some(GamepadButton::Start),
17
gilrs::Button::Mode => Some(GamepadButton::Mode),
18
gilrs::Button::LeftThumb => Some(GamepadButton::LeftThumb),
19
gilrs::Button::RightThumb => Some(GamepadButton::RightThumb),
20
gilrs::Button::DPadUp => Some(GamepadButton::DPadUp),
21
gilrs::Button::DPadDown => Some(GamepadButton::DPadDown),
22
gilrs::Button::DPadLeft => Some(GamepadButton::DPadLeft),
23
gilrs::Button::DPadRight => Some(GamepadButton::DPadRight),
24
gilrs::Button::Unknown => None,
25
}
26
}
27
28
pub fn convert_axis(axis: gilrs::Axis) -> Option<GamepadAxis> {
29
match axis {
30
gilrs::Axis::LeftStickX => Some(GamepadAxis::LeftStickX),
31
gilrs::Axis::LeftStickY => Some(GamepadAxis::LeftStickY),
32
gilrs::Axis::LeftZ => Some(GamepadAxis::LeftZ),
33
gilrs::Axis::RightStickX => Some(GamepadAxis::RightStickX),
34
gilrs::Axis::RightStickY => Some(GamepadAxis::RightStickY),
35
gilrs::Axis::RightZ => Some(GamepadAxis::RightZ),
36
// The `axis_dpad_to_button` gilrs filter should filter out all DPadX and DPadY events. If
37
// it doesn't then we probably need an entry added to the following repo and an update to
38
// GilRs to use the updated database: https://github.com/gabomdq/SDL_GameControllerDB
39
gilrs::Axis::Unknown | gilrs::Axis::DPadX | gilrs::Axis::DPadY => None,
40
}
41
}
42
43