#[derive(Debug, Default)] pub struct MouseIO { pub position: [f32; 2], // 鼠标当前位置 pub drag_delta: Option<[f32; 2]>, // 拖动开始时的鼠标位置 pub is_dragging: bool, // 是否正在拖动 pub left_button_pressed: bool, // 左键是否被按下 pub right_button_pressed: bool, // 右键是否被按下 pub wheel_delta: f32, // 鼠标滚轮变化值 pub drag_sum: [f32; 2], // 拖动累计值 } #[derive(Debug)] pub struct KeyboardIO { pub keys: [bool; 4], // 键盘按键状态 } impl Default for KeyboardIO { fn default() -> Self { Self { keys: [false; 4] } } } #[derive(Debug, Default)] pub struct IO { pub mouse: MouseIO, pub keyboard: KeyboardIO, } impl IO { pub fn reset(&mut self) { self.mouse.wheel_delta = 0.0; } }