pub struct InputState { /* private fields */ }Expand description
输入状态资源
每帧追踪键盘和鼠标的完整输入状态。 支持 pressed(持续按下)、just_pressed(本帧按下)、just_released(本帧松开)查询。
§示例
use anvilkit_input::input_state::{InputState, KeyCode, MouseButton};
let mut input = InputState::new();
// 模拟按键
input.press_key(KeyCode::W);
assert!(input.is_key_pressed(KeyCode::W));
assert!(input.is_key_just_pressed(KeyCode::W));
// 帧结束
input.end_frame();
assert!(input.is_key_pressed(KeyCode::W));
assert!(!input.is_key_just_pressed(KeyCode::W));
// 松开
input.release_key(KeyCode::W);
assert!(!input.is_key_pressed(KeyCode::W));
assert!(input.is_key_just_released(KeyCode::W));Implementations§
Source§impl InputState
impl InputState
Sourcepub fn release_key(&mut self, key: KeyCode)
pub fn release_key(&mut self, key: KeyCode)
记录按键松开
Sourcepub fn is_key_pressed(&self, key: KeyCode) -> bool
pub fn is_key_pressed(&self, key: KeyCode) -> bool
键是否正在按下
Sourcepub fn is_key_just_pressed(&self, key: KeyCode) -> bool
pub fn is_key_just_pressed(&self, key: KeyCode) -> bool
键是否本帧刚按下
Sourcepub fn is_key_just_released(&self, key: KeyCode) -> bool
pub fn is_key_just_released(&self, key: KeyCode) -> bool
键是否本帧刚松开
Sourcepub fn press_mouse(&mut self, button: MouseButton)
pub fn press_mouse(&mut self, button: MouseButton)
记录鼠标按钮按下
Sourcepub fn release_mouse(&mut self, button: MouseButton)
pub fn release_mouse(&mut self, button: MouseButton)
记录鼠标按钮松开
Sourcepub fn is_mouse_pressed(&self, button: MouseButton) -> bool
pub fn is_mouse_pressed(&self, button: MouseButton) -> bool
鼠标按钮是否正在按下
Sourcepub fn is_mouse_just_pressed(&self, button: MouseButton) -> bool
pub fn is_mouse_just_pressed(&self, button: MouseButton) -> bool
鼠标按钮是否本帧刚按下
Sourcepub fn is_mouse_just_released(&self, button: MouseButton) -> bool
pub fn is_mouse_just_released(&self, button: MouseButton) -> bool
鼠标按钮是否本帧刚松开
Sourcepub fn set_mouse_position(&mut self, position: Vec2)
pub fn set_mouse_position(&mut self, position: Vec2)
设置鼠标位置
Sourcepub fn add_mouse_delta(&mut self, delta: Vec2)
pub fn add_mouse_delta(&mut self, delta: Vec2)
累加鼠标移动量
Sourcepub fn mouse_position(&self) -> Vec2
pub fn mouse_position(&self) -> Vec2
获取鼠标位置
Sourcepub fn mouse_delta(&self) -> Vec2
pub fn mouse_delta(&self) -> Vec2
获取本帧鼠标移动量
Sourcepub fn add_scroll_delta(&mut self, delta: f32)
pub fn add_scroll_delta(&mut self, delta: f32)
累加滚轮滚动量
Sourcepub fn scroll_delta(&self) -> f32
pub fn scroll_delta(&self) -> f32
获取本帧滚轮滚动量
Sourcepub fn pressed_keys(&self) -> &HashSet<KeyCode>
pub fn pressed_keys(&self) -> &HashSet<KeyCode>
获取当前按下的所有键
Trait Implementations§
Source§impl Default for InputState
impl Default for InputState
impl Resource for InputState
Auto Trait Implementations§
impl Freeze for InputState
impl RefUnwindSafe for InputState
impl Send for InputState
impl Sync for InputState
impl Unpin for InputState
impl UnsafeUnpin for InputState
impl UnwindSafe for InputState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates
Self using data from the given World.