# Objective - Part of the splitting process of #3692. ## Solution - Remove / change the tuple structs inside of `gamepad.rs` of `bevy_input` to normal structs. ## Reasons - It made the `gamepad_connection_system` cleaner. - It made the `gamepad_input_events.rs` example cleaner (which is probably the most notable change for the user facing API). - Tuple structs are not descriptive (`.0`, `.1`). - Using tuple structs for more than 1 field is a bad idea (This means that the `Gamepad` type might be fine as a tuple struct, but I still prefer normal structs over tuple structs). Feel free to discuss this change as this is more or less just a matter of taste. ## Changelog ### Changed - The `Gamepad`, `GamepadButton`, `GamepadAxis`, `GamepadEvent` and `GamepadEventRaw` types are now normal structs instead of tuple structs and have a `new()` function. ## Migration Guide - The `Gamepad`, `GamepadButton`, `GamepadAxis`, `GamepadEvent` and `GamepadEventRaw` types are now normal structs instead of tuple structs and have a `new()` function. To migrate change every instantiation to use the `new()` function instead and use the appropriate field names instead of `.0` and `.1`.
45 lines
2.2 KiB
Rust
45 lines
2.2 KiB
Rust
use bevy_input::gamepad::{Gamepad, GamepadAxisType, GamepadButtonType};
|
|
|
|
pub fn convert_gamepad_id(gamepad_id: gilrs::GamepadId) -> Gamepad {
|
|
Gamepad::new(gamepad_id.into())
|
|
}
|
|
|
|
pub fn convert_button(button: gilrs::Button) -> Option<GamepadButtonType> {
|
|
match button {
|
|
gilrs::Button::South => Some(GamepadButtonType::South),
|
|
gilrs::Button::East => Some(GamepadButtonType::East),
|
|
gilrs::Button::North => Some(GamepadButtonType::North),
|
|
gilrs::Button::West => Some(GamepadButtonType::West),
|
|
gilrs::Button::C => Some(GamepadButtonType::C),
|
|
gilrs::Button::Z => Some(GamepadButtonType::Z),
|
|
gilrs::Button::LeftTrigger => Some(GamepadButtonType::LeftTrigger),
|
|
gilrs::Button::LeftTrigger2 => Some(GamepadButtonType::LeftTrigger2),
|
|
gilrs::Button::RightTrigger => Some(GamepadButtonType::RightTrigger),
|
|
gilrs::Button::RightTrigger2 => Some(GamepadButtonType::RightTrigger2),
|
|
gilrs::Button::Select => Some(GamepadButtonType::Select),
|
|
gilrs::Button::Start => Some(GamepadButtonType::Start),
|
|
gilrs::Button::Mode => Some(GamepadButtonType::Mode),
|
|
gilrs::Button::LeftThumb => Some(GamepadButtonType::LeftThumb),
|
|
gilrs::Button::RightThumb => Some(GamepadButtonType::RightThumb),
|
|
gilrs::Button::DPadUp => Some(GamepadButtonType::DPadUp),
|
|
gilrs::Button::DPadDown => Some(GamepadButtonType::DPadDown),
|
|
gilrs::Button::DPadLeft => Some(GamepadButtonType::DPadLeft),
|
|
gilrs::Button::DPadRight => Some(GamepadButtonType::DPadRight),
|
|
gilrs::Button::Unknown => None,
|
|
}
|
|
}
|
|
|
|
pub fn convert_axis(axis: gilrs::Axis) -> Option<GamepadAxisType> {
|
|
match axis {
|
|
gilrs::Axis::LeftStickX => Some(GamepadAxisType::LeftStickX),
|
|
gilrs::Axis::LeftStickY => Some(GamepadAxisType::LeftStickY),
|
|
gilrs::Axis::LeftZ => Some(GamepadAxisType::LeftZ),
|
|
gilrs::Axis::RightStickX => Some(GamepadAxisType::RightStickX),
|
|
gilrs::Axis::RightStickY => Some(GamepadAxisType::RightStickY),
|
|
gilrs::Axis::RightZ => Some(GamepadAxisType::RightZ),
|
|
gilrs::Axis::DPadX => Some(GamepadAxisType::DPadX),
|
|
gilrs::Axis::DPadY => Some(GamepadAxisType::DPadY),
|
|
gilrs::Axis::Unknown => None,
|
|
}
|
|
}
|