use crate::types::{GamepadAxis, GamepadButton, GamepadId, KeyCode, MouseButton};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "config-files", derive(serde::Serialize, serde::Deserialize))]
pub enum InputEvent {
KeyPress {
key: KeyCode,
},
KeyRelease {
key: KeyCode,
},
MouseMove {
x: f32,
y: f32,
dx: f32,
dy: f32,
},
MouseButtonPress {
button: MouseButton,
x: f32,
y: f32,
},
MouseButtonRelease {
button: MouseButton,
x: f32,
y: f32,
},
MouseScroll {
delta_x: f32,
delta_y: f32,
},
GamepadButtonPress {
id: GamepadId,
button: GamepadButton,
},
GamepadButtonRelease {
id: GamepadId,
button: GamepadButton,
},
GamepadAxisMove {
id: GamepadId,
axis: GamepadAxis,
value: f32,
},
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "config-files", derive(serde::Serialize, serde::Deserialize))]
pub struct TimestampedEvent {
pub timestamp: f64,
pub frame: u32,
pub event: InputEvent,
}