reaction 0.2.0

Universal low-latency input handling for game engines
Documentation
use crate::error::{ReactionError, Result};
use crate::raw_input::common::{RawInputData, RawInputProvider};

#[derive(Default)]
pub struct WindowsRawInput {
    initialized: bool,
    queue: Vec<RawInputData>,
}

impl WindowsRawInput {
    pub fn new() -> Self {
        Self {
            initialized: false,
            queue: Vec::new(),
        }
    }

    /// Add simulated data for testing integration
    pub fn simulate_data(&mut self, data: RawInputData) {
        self.queue.push(data);
    }
}

impl RawInputProvider for WindowsRawInput {
    fn initialize(&mut self) -> Result<()> {
        self.initialized = true;
        Ok(())
    }

    fn poll(&mut self) -> Result<Option<RawInputData>> {
        if !self.initialized {
            return Err(ReactionError::RawInputError(
                "WindowsRawInput not initialized".into(),
            ));
        }

        Ok(self.queue.pop())
    }

    fn shutdown(&mut self) -> Result<()> {
        self.initialized = false;
        self.queue.clear();
        Ok(())
    }
}