reaction 0.2.0

Universal low-latency input handling for game engines
Documentation
use crate::mapping::binding::BindingConfig;

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "config-files", derive(serde::Serialize, serde::Deserialize))]
pub enum InputTrigger {
    /// Basic: Input is currently down (default behavior)
    Down,
    /// Edge: Input was just pressed this frame
    Pressed,
    /// Edge: Input was just released this frame
    Released,
    /// Timed: Input has been held for at least `min_duration` seconds
    Held { min_duration: f32 },
    /// Combination: All triggers must be active simultaneously
    Chord(Vec<InputTrigger>),
}

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "config-files", derive(serde::Serialize, serde::Deserialize))]
pub struct TriggeredAction {
    pub binding: BindingConfig,
    pub trigger: InputTrigger,
}