Files
esengine/packages/engine/src/input/input_manager.rs

62 lines
1.6 KiB
Rust
Raw Normal View History

//! Unified input manager.
//! 统一输入管理器。
use super::{KeyboardState, MouseState, TouchState};
/// Unified input manager handling keyboard, mouse, and touch.
/// 处理键盘、鼠标和触摸的统一输入管理器。
///
/// Provides a single interface for all input types.
/// 为所有输入类型提供单一接口。
#[derive(Debug, Default)]
pub struct InputManager {
/// Keyboard state.
/// 键盘状态。
pub keyboard: KeyboardState,
/// Mouse state.
/// 鼠标状态。
pub mouse: MouseState,
/// Touch state.
/// 触摸状态。
pub touch: TouchState,
}
impl InputManager {
/// Create a new input manager.
/// 创建新的输入管理器。
pub fn new() -> Self {
Self::default()
}
/// Update all input states for a new frame.
/// 为新帧更新所有输入状态。
pub fn update(&mut self) {
self.keyboard.update();
self.mouse.update();
self.touch.update();
}
/// Check if a key is currently pressed.
/// 检查某个键是否当前被按下。
#[inline]
pub fn is_key_down(&self, key: &str) -> bool {
self.keyboard.is_key_down(key)
}
/// Check if a key was just pressed this frame.
/// 检查某个键是否在本帧刚被按下。
#[inline]
pub fn is_key_just_pressed(&self, key: &str) -> bool {
self.keyboard.is_key_just_pressed(key)
}
/// Clear all input states.
/// 清除所有输入状态。
pub fn clear(&mut self) {
self.keyboard.clear();
self.touch.clear();
}
}