pub enum UserInput {
Single(InputButton),
Chord(PetitSet<InputButton, 8>),
}
Expand description
Variants
Single(InputButton)
A single button
Chord(PetitSet<InputButton, 8>)
A combination of buttons, pressed simultaneously
Up to 8 (!!) buttons can be chorded together at once. Chords are considered to belong to all of the InputModes of their constituent buttons.
Implementations
sourceimpl UserInput
impl UserInput
sourcepub fn chord(buttons: impl IntoIterator<Item = impl Into<InputButton>>) -> Self
pub fn chord(buttons: impl IntoIterator<Item = impl Into<InputButton>>) -> Self
Creates a UserInput::Chord
from an iterator of [Button
]s
If buttons
has a length of 1, a UserInput::Single
variant will be returned instead.
sourcepub fn input_modes(&self) -> PetitSet<InputMode, 3>
pub fn input_modes(&self) -> PetitSet<InputMode, 3>
Which InputMode
s does this input contain?
sourcepub fn matches_input_mode(&self, input_mode: InputMode) -> bool
pub fn matches_input_mode(&self, input_mode: InputMode) -> bool
Does this UserInput
match the provided InputMode
?
For UserInput::Chord
, this will be true if any of the buttons in the combination match.
sourcepub fn n_matching(&self, buttons: &HashSet<InputButton>) -> usize
pub fn n_matching(&self, buttons: &HashSet<InputButton>) -> usize
How many of the provided buttons
are found in the UserInput
Example
use bevy_input::keyboard::KeyCode::*;
use bevy_utils::HashSet;
use leafwing_input_manager::user_input::UserInput;
let buttons = HashSet::from_iter([LControl.into(), LAlt.into()]);
let a: UserInput = A.into();
let ctrl_a = UserInput::chord([LControl, A]);
let ctrl_alt_a = UserInput::chord([LControl, LAlt, A]);
assert_eq!(a.n_matching(&buttons), 0);
assert_eq!(ctrl_a.n_matching(&buttons), 1);
assert_eq!(ctrl_alt_a.n_matching(&buttons), 2);
sourcepub fn raw_inputs(
&self
) -> (Vec<GamepadButtonType>, Vec<KeyCode>, Vec<MouseButton>)
pub fn raw_inputs(
&self
) -> (Vec<GamepadButtonType>, Vec<KeyCode>, Vec<MouseButton>)
Returns the raw inputs that make up this UserInput
Trait Implementations
sourceimpl<'de> Deserialize<'de> for UserInput
impl<'de> Deserialize<'de> for UserInput
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl From<GamepadButtonType> for UserInput
impl From<GamepadButtonType> for UserInput
sourcefn from(input: GamepadButtonType) -> Self
fn from(input: GamepadButtonType) -> Self
Converts to this type from the input type.
sourceimpl From<InputButton> for UserInput
impl From<InputButton> for UserInput
sourcefn from(input: InputButton) -> Self
fn from(input: InputButton) -> Self
Converts to this type from the input type.
sourceimpl From<MouseButton> for UserInput
impl From<MouseButton> for UserInput
sourcefn from(input: MouseButton) -> Self
fn from(input: MouseButton) -> Self
Converts to this type from the input type.
impl Eq for UserInput
impl StructuralEq for UserInput
impl StructuralPartialEq for UserInput
Auto Trait Implementations
impl RefUnwindSafe for UserInput
impl Send for UserInput
impl Sync for UserInput
impl Unpin for UserInput
impl UnwindSafe for UserInput
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
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. Read more
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. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> Serialize for T where
T: Serialize + ?Sized,
impl<T> Serialize for T where
T: Serialize + ?Sized,
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more