pub struct InputStreams<'a> {
pub gamepad_buttons: &'a ButtonInput<GamepadButton>,
pub gamepad_button_axes: &'a Axis<GamepadButton>,
pub gamepad_axes: &'a Axis<GamepadAxis>,
pub gamepads: &'a Gamepads,
pub keycodes: Option<&'a ButtonInput<KeyCode>>,
pub mouse_buttons: Option<&'a ButtonInput<MouseButton>>,
pub mouse_wheel: Option<Vec<MouseWheel>>,
pub mouse_motion: Vec<MouseMotion>,
pub associated_gamepad: Option<Gamepad>,
}
Expand description
A collection of [ButtonInput
] structs, which can be used to update an InputMap
.
These are typically collected via a system from the [World
] as resources.
Fields§
A [GamepadButton
] Input
stream
A [GamepadButton
] [Axis
] stream
gamepad_axes: &'a Axis<GamepadAxis>
A [GamepadAxis
] [Axis
] stream
gamepads: &'a Gamepads
A list of registered gamepads
keycodes: Option<&'a ButtonInput<KeyCode>>
A [KeyCode
] [ButtonInput
] stream
A [MouseButton
] Input
stream
mouse_wheel: Option<Vec<MouseWheel>>
A [MouseWheel
] event stream
mouse_motion: Vec<MouseMotion>
A [MouseMotion
] event stream
associated_gamepad: Option<Gamepad>
The [Gamepad
] that this struct will detect inputs from
Implementations§
source§impl<'a> InputStreams<'a>
impl<'a> InputStreams<'a>
sourcepub fn from_world(world: &'a World, gamepad: Option<Gamepad>) -> Self
pub fn from_world(world: &'a World, gamepad: Option<Gamepad>) -> Self
Construct an InputStreams
from a [World
]
source§impl<'a> InputStreams<'a>
impl<'a> InputStreams<'a>
sourcepub fn input_pressed(&self, input: &UserInput) -> bool
pub fn input_pressed(&self, input: &UserInput) -> bool
Is the input
matched by the InputStreams
?
sourcepub fn any_pressed(&self, inputs: &HashSet<UserInput>) -> bool
pub fn any_pressed(&self, inputs: &HashSet<UserInput>) -> bool
Is at least one of the inputs
pressed?
Is the button
pressed?
Are all the buttons
pressed?
sourcepub fn input_value(&self, input: &UserInput, include_deadzone: bool) -> f32
pub fn input_value(&self, input: &UserInput, include_deadzone: bool) -> f32
Get the “value” of the input.
For binary inputs such as buttons, this will always be either 0.0
or 1.0
. For analog
inputs such as axes, this will be the axis value.
UserInput::Chord
inputs are also considered binary and will return 0.0
or 1.0
based
on whether the chord has been pressed.
§Warning
If you need to ensure that this value is always in the range [-1., 1.]
,
be sure to clamp the returned data.
sourcepub fn input_axis_pair(&self, input: &UserInput) -> Option<DualAxisData>
pub fn input_axis_pair(&self, input: &UserInput) -> Option<DualAxisData>
Get the axis pair associated to the user input.
If input
is a chord, returns result of the first dual axis in the chord.
If input
is not a DualAxis
or VirtualDPad
, returns None
.
§Warning
If you need to ensure that this value is always in the range [-1., 1.]
,
be sure to clamp the returned data.
Trait Implementations§
source§impl<'a> Clone for InputStreams<'a>
impl<'a> Clone for InputStreams<'a>
source§fn clone(&self) -> InputStreams<'a>
fn clone(&self) -> InputStreams<'a>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'a> Debug for InputStreams<'a>
impl<'a> Debug for InputStreams<'a>
source§impl<'a> From<&'a MutableInputStreams<'a>> for InputStreams<'a>
impl<'a> From<&'a MutableInputStreams<'a>> for InputStreams<'a>
source§fn from(mutable_streams: &'a MutableInputStreams<'a>) -> Self
fn from(mutable_streams: &'a MutableInputStreams<'a>) -> Self
source§impl<'a> From<MutableInputStreams<'a>> for InputStreams<'a>
impl<'a> From<MutableInputStreams<'a>> for InputStreams<'a>
source§fn from(mutable_streams: MutableInputStreams<'a>) -> Self
fn from(mutable_streams: MutableInputStreams<'a>) -> Self
source§impl QueryInput for InputStreams<'_>
impl QueryInput for InputStreams<'_>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for InputStreams<'a>
impl<'a> Send for InputStreams<'a>
impl<'a> Sync for InputStreams<'a>
impl<'a> Unpin for InputStreams<'a>
impl<'a> UnwindSafe for InputStreams<'a>
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist.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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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
.§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
.§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.§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.