pub struct InputHandler<ActionId, AxisId>{
pub keys: AHashMap<Key, Location>,
pub mouse_buttons: AHashSet<MouseButton>,
pub mouse_position: Option<(f64, f64)>,
pub last_mouse_position: Option<(f64, f64)>,
pub mouse_delta: (f64, f64),
pub modifiers: AHashSet<Modifier>,
pub modifiers_state: ModifiersState,
pub mouse_button_action: MouseButtonAction,
pub window_focused: bool,
pub input_events: VecDeque<InputEvent>,
/* private fields */
}Expand description
Handler Contains all the Possible Key presses, Modifier Presses and Mouse locations.
Fields§
§keys: AHashMap<Key, Location>The set of keys that are currently pressed down by their virtual key code.
The set of mouse buttons that are currently pressed down.
mouse_position: Option<(f64, f64)>The current pysical mouse position.
last_mouse_position: Option<(f64, f64)>The last recorded pysical mouse position.
mouse_delta: (f64, f64)The mouse delta, i.e. the relative mouse motion.
modifiers: AHashSet<Modifier>key modifiers can tell if left or right keys.
modifiers_state: ModifiersStatekey modifiers state can not tell if left or right keys.
Current Mouse button presses in action. Please refer to the input_events To get a finished MouseButtonAvtion Return.
window_focused: boolIf the window is focused or not.
input_events: VecDeque<InputEvent>Input events gathered per the last Click. Will contain multiple events.
Implementations§
Source§impl<ActionId, AxisId> InputHandler<ActionId, AxisId>
impl<ActionId, AxisId> InputHandler<ActionId, AxisId>
pub fn axis_value<A>(&self, id: &A) -> f64
Sourcepub fn is_action_down<A>(&self, action: &A) -> bool
pub fn is_action_down<A>(&self, action: &A) -> bool
Looks up the set of bindings for the action, and then checks if there is any binding for which all buttons are currently down.
Checks if a mouse button or key button is down.
Sourcepub fn is_key_down(&self, key: Key, location: Option<Location>) -> bool
pub fn is_key_down(&self, key: Key, location: Option<Location>) -> bool
Checks if a key is down.
Sourcepub fn is_modifier_down(&self, modifier: Modifier) -> bool
pub fn is_modifier_down(&self, modifier: Modifier) -> bool
Checks if a modifier is down.
Sourcepub fn is_focused(&self) -> bool
pub fn is_focused(&self) -> bool
Checks if the window is focused.
Checks if a mouse button is down.
Sourcepub fn modifiers_state(&self) -> ModifiersState
pub fn modifiers_state(&self) -> ModifiersState
Get the modifier state. This can not tell between left and right buttons. Only use if you dont care which side is pressed.
Sourcepub fn events(&mut self) -> VecDeque<InputEvent>
pub fn events(&mut self) -> VecDeque<InputEvent>
Get the current events that where last processed during update. Clears the internal event array.
Sourcepub fn pop_event(&mut self) -> Option<InputEvent>
pub fn pop_event(&mut self) -> Option<InputEvent>
Get the next pending event. Returns None when empty.
Sourcepub fn physical_mouse_position(&self) -> Option<(f64, f64)>
pub fn physical_mouse_position(&self) -> Option<(f64, f64)>
Get Physical mouse position. This value is a f64 and is not calculated against the DPI.
Sourcepub fn new(
bindings: Bindings<ActionId, AxisId>,
click_duration: Duration,
) -> Self
pub fn new( bindings: Bindings<ActionId, AxisId>, click_duration: Duration, ) -> Self
Initialize the Input Handler. bindings: Mapping of actions to take per certain requirements. click_duration: is the allowed duration between each click before the click is submitted.
pub fn set_click_duration(&mut self, click_duration: Duration)
pub fn get_click_duration(&mut self) -> Duration
Sourcepub fn window_updates(&mut self, event: &WindowEvent)
pub fn window_updates(&mut self, event: &WindowEvent)
Update the Input Handler based upon the windows events.
pub fn device_updates(&mut self, event: &DeviceEvent)
Auto Trait Implementations§
impl<ActionId, AxisId> Freeze for InputHandler<ActionId, AxisId>
impl<ActionId, AxisId> RefUnwindSafe for InputHandler<ActionId, AxisId>where
ActionId: RefUnwindSafe,
AxisId: RefUnwindSafe,
impl<ActionId, AxisId> Send for InputHandler<ActionId, AxisId>
impl<ActionId, AxisId> Sync for InputHandler<ActionId, AxisId>
impl<ActionId, AxisId> Unpin for InputHandler<ActionId, AxisId>
impl<ActionId, AxisId> UnwindSafe for InputHandler<ActionId, AxisId>where
ActionId: UnwindSafe,
AxisId: UnwindSafe,
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
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>
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>
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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.