Fix up sync gamepad code
This commit is contained in:
parent
0199799633
commit
2e909d6217
1 changed files with 13 additions and 12 deletions
|
@ -26,10 +26,12 @@ pub enum GamepadEvent {
|
|||
/// Example:
|
||||
/// ```rust
|
||||
///
|
||||
/// let jogger = jogger::Jogger::new().await.unwrap();
|
||||
/// use red::gamepad;
|
||||
/// let mut jogger = gamepad::Gamepad::new().unwrap();
|
||||
/// loop {
|
||||
/// tokio::time::sleep(Duration::from_secs(2)).await;
|
||||
/// let setpoint = jogger.speed_setpoint();
|
||||
/// std::thread::sleep(std::time::Duration::from_secs(2));
|
||||
/// let events = jogger.get_pending();
|
||||
/// let setpoint = jogger.speed_set_point(&events);
|
||||
/// println!(
|
||||
/// "speed setpoint: {} {} {}",
|
||||
/// setpoint.0, setpoint.1, setpoint.2
|
||||
|
@ -68,29 +70,28 @@ impl Gamepad {
|
|||
.and_then(|event| Self::map_event(event))
|
||||
}
|
||||
|
||||
// Get all `GamepadEvent`s since the last call
|
||||
/// Get all `GamepadEvent`s since the last call
|
||||
pub fn get_pending(&mut self) -> Vec<GamepadEvent> {
|
||||
(0..).map_while(|_| self.get_next()).collect()
|
||||
}
|
||||
|
||||
/// Update the current speed via the movements on the controller and return the current setpoint
|
||||
/// Update the current speed via the movements on the controller and return the current set
|
||||
/// point
|
||||
///
|
||||
/// If you don't want to update, just supply an empty `updates` slice
|
||||
pub fn speed_setpoint(&mut self, updates: &[GamepadEvent]) -> (f32, f32, f32) {
|
||||
pub fn speed_set_point(&mut self, updates: &[GamepadEvent]) -> (f32, f32, f32) {
|
||||
for event in updates {
|
||||
match event {
|
||||
GamepadEvent::TerminatePressed => break,
|
||||
GamepadEvent::AxisPosition(axis, value) => {
|
||||
// I won't panic if you don't panic!
|
||||
let mut speed_setpoint = self.speed_setpoint;
|
||||
match axis {
|
||||
Axis::X => speed_setpoint.0 = *value,
|
||||
Axis::Y => speed_setpoint.1 = *value,
|
||||
Axis::X => self.speed_setpoint.0 = *value,
|
||||
Axis::Y => self.speed_setpoint.1 = *value,
|
||||
Axis::ZPositive => {
|
||||
speed_setpoint.2 = *value;
|
||||
self.speed_setpoint.2 = *value;
|
||||
}
|
||||
Axis::ZNegative => {
|
||||
speed_setpoint.3 = *value;
|
||||
self.speed_setpoint.3 = *value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue