bevy_controls 1.1.0

Bevy controls library
Documentation
use bevy::ecs::system::Query;

use crate::accumulative::accumulative_control::AccumulativeControl;

pub trait AccumulativeActionReader<TAction> {
    fn read_action_delta(&mut self, action: TAction) -> f32;
}

impl<TContext: Sync + Send + 'static, TAction: Sync + Send + 'static + PartialEq>
    AccumulativeActionReader<TAction>
    for Query<'_, '_, &mut AccumulativeControl<TContext, TAction>>
{
    fn read_action_delta(&mut self, action: TAction) -> f32 {
        self.iter_mut()
            .find(|c| c.action == action)
            .map(|mut a| a.read_delta())
            .unwrap_or_default()
    }
}