leafwing_input_manager::user_input

Trait Buttonlike

source
pub trait Buttonlike:
    UserInput
    + DynClone
    + DynEq
    + DynHash
    + Reflect
    + Serialize {
    // Required method
    fn pressed(&self, input_store: &CentralInputStore, gamepad: Gamepad) -> bool;

    // Provided methods
    fn released(
        &self,
        input_store: &CentralInputStore,
        gamepad: Gamepad,
    ) -> bool { ... }
    fn press(&self, world: &mut World) { ... }
    fn press_as_gamepad(&self, world: &mut World, _gamepad: Option<Gamepad>) { ... }
    fn release(&self, world: &mut World) { ... }
    fn release_as_gamepad(&self, world: &mut World, _gamepad: Option<Gamepad>) { ... }
}
Expand description

A trait used for buttonlike user inputs, which can be pressed or released.

Required Methods§

source

fn pressed(&self, input_store: &CentralInputStore, gamepad: Gamepad) -> bool

Checks if the input is currently active.

Provided Methods§

source

fn released(&self, input_store: &CentralInputStore, gamepad: Gamepad) -> bool

Checks if the input is currently inactive.

source

fn press(&self, world: &mut World)

Simulates a press of the buttonlike input by sending the appropriate event.

This method defaults to calling Buttonlike::press_as_gamepad if not overridden, as is the case for gamepad-reliant inputs.

source

fn press_as_gamepad(&self, world: &mut World, _gamepad: Option<Gamepad>)

Simulate a press of the buttonlike input, pretending to be the provided Gamepad.

This method defaults to calling Buttonlike::press if not overridden, as is the case for things like mouse buttons and keyboard keys.

Use find_gamepad inside of this method to search for a gamepad to press the button on if the provided gamepad is None.

source

fn release(&self, world: &mut World)

Simulates a release of the buttonlike input by sending the appropriate event.

This method defaults to calling Buttonlike::release_as_gamepad if not overridden, as is the case for gamepad-reliant inputs.

source

fn release_as_gamepad(&self, world: &mut World, _gamepad: Option<Gamepad>)

Simulate a release of the buttonlike input, pretending to be the provided Gamepad.

This method defaults to calling Buttonlike::release if not overridden, as is the case for things like mouse buttons and keyboard keys.

Use find_gamepad inside of this method to search for a gamepad to press the button on if the provided gamepad is None.

Trait Implementations§

source§

impl<'de> Deserialize<'de> for Box<dyn Buttonlike>

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl FromReflect for Box<dyn Buttonlike>

source§

fn from_reflect(reflect: &dyn Reflect) -> Option<Self>

Constructs a concrete instance of Self from a reflected value.
source§

fn take_from_reflect( reflect: Box<dyn Reflect>, ) -> Result<Self, Box<dyn Reflect>>

Attempts to downcast the given value to Self using, constructing the value using from_reflect if that fails. Read more
source§

impl GetTypeRegistration for Box<dyn Buttonlike>

source§

fn get_type_registration() -> TypeRegistration

Returns the default TypeRegistration for this type.
source§

fn register_type_dependencies(registry: &mut TypeRegistry)

Registers other types needed by this type. Read more
source§

impl<'hash> Hash for dyn Buttonlike + 'hash

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
source§

impl<'hash> Hash for dyn Buttonlike + Send + 'hash

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
source§

impl<'hash> Hash for dyn Buttonlike + Send + Sync + 'hash

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
source§

impl<'hash> Hash for dyn Buttonlike + Sync + 'hash

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
source§

impl<'eq> PartialEq<&Box<dyn Buttonlike + 'eq>> for Box<dyn Buttonlike + 'eq>

source§

fn eq(&self, other: &&Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'eq> PartialEq<&Box<dyn Buttonlike + Send + 'eq>> for Box<dyn Buttonlike + Send + 'eq>

source§

fn eq(&self, other: &&Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'eq> PartialEq<&Box<dyn Buttonlike + Sync + Send + 'eq>> for Box<dyn Buttonlike + Send + Sync + 'eq>

source§

fn eq(&self, other: &&Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'eq> PartialEq<&Box<dyn Buttonlike + Sync + 'eq>> for Box<dyn Buttonlike + Sync + 'eq>

source§

fn eq(&self, other: &&Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'eq> PartialEq for dyn Buttonlike + 'eq

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'eq> PartialEq for dyn Buttonlike + Send + 'eq

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'eq> PartialEq for dyn Buttonlike + Send + Sync + 'eq

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'eq> PartialEq for dyn Buttonlike + Sync + 'eq

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Reflect for Box<dyn Buttonlike>

source§

fn get_represented_type_info(&self) -> Option<&'static TypeInfo>

Returns the TypeInfo of the type represented by this value. Read more
source§

fn into_any(self: Box<Self>) -> Box<dyn Any>

Returns the value as a Box<dyn Any>.
source§

fn as_any(&self) -> &dyn Any

Returns the value as a &dyn Any.
source§

fn as_any_mut(&mut self) -> &mut dyn Any

Returns the value as a &mut dyn Any.
source§

fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>

Casts this type to a boxed reflected value.
source§

fn as_reflect(&self) -> &dyn Reflect

Casts this type to a reflected value.
source§

fn as_reflect_mut(&mut self) -> &mut dyn Reflect

Casts this type to a mutable reflected value.
source§

fn try_apply(&mut self, value: &dyn Reflect) -> Result<(), ApplyError>

Tries to apply a reflected value to this value. Read more
source§

fn apply(&mut self, value: &dyn Reflect)

Applies a reflected value to this value. Read more
source§

fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>

Performs a type-checked assignment of a reflected value to this value. Read more
source§

fn reflect_kind(&self) -> ReflectKind

Returns a zero-sized enumeration of “kinds” of type. Read more
source§

fn reflect_ref(&self) -> ReflectRef<'_>

Returns an immutable enumeration of “kinds” of type. Read more
source§

fn reflect_mut(&mut self) -> ReflectMut<'_>

Returns a mutable enumeration of “kinds” of type. Read more
source§

fn reflect_owned(self: Box<Self>) -> ReflectOwned

Returns an owned enumeration of “kinds” of type. Read more
source§

fn clone_value(&self) -> Box<dyn Reflect>

Clones the value as a Reflect trait object. Read more
source§

fn reflect_hash(&self) -> Option<u64>

Returns a hash of the value (which includes the type). Read more
source§

fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>

Returns a “partial equality” comparison result. Read more
source§

fn debug(&self, f: &mut Formatter<'_>) -> Result

Debug formatter for the value. Read more
source§

fn serializable(&self) -> Option<Serializable<'_>>

Returns a serializable version of the value. Read more
source§

fn is_dynamic(&self) -> bool

Indicates whether or not this type is a dynamic type. Read more
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for ButtonlikeChord

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for GamepadButton

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for GamepadButtonType

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for GamepadControlDirection

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for KeyCode

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for ModifierKey

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for MouseButton

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for MouseMoveDirection

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'de> RegisterTypeTag<'de, dyn Buttonlike> for MouseScrollDirection

source§

fn register_typetag(registry: &mut InfallibleMapRegistry<dyn Buttonlike>)

Registers the specified type tag into the InfallibleMapRegistry.
source§

impl<'a> Serialize for dyn Buttonlike + 'a

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl TypePath for Box<dyn Buttonlike>

source§

fn type_path() -> &'static str

Returns the fully qualified path of the underlying type. Read more
source§

fn short_type_path() -> &'static str

Returns a short, pretty-print enabled path to the type. Read more
source§

fn type_ident() -> Option<&'static str>

Returns the name of the type, or None if it is anonymous. Read more
source§

fn crate_name() -> Option<&'static str>

Returns the name of the crate the type is in, or None if it is anonymous. Read more
source§

fn module_path() -> Option<&'static str>

Returns the path to the module the type is in, or None if it is anonymous. Read more
source§

impl Typed for Box<dyn Buttonlike>

source§

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.
source§

impl<'eq> Eq for dyn Buttonlike + 'eq

source§

impl<'eq> Eq for dyn Buttonlike + Send + 'eq

source§

impl<'eq> Eq for dyn Buttonlike + Send + Sync + 'eq

source§

impl<'eq> Eq for dyn Buttonlike + Sync + 'eq

Implementations on Foreign Types§

source§

impl Buttonlike for GamepadButtonType

source§

fn pressed(&self, input_store: &CentralInputStore, gamepad: Gamepad) -> bool

Checks if the specified button is currently pressed down.

source§

fn press_as_gamepad(&self, world: &mut World, gamepad: Option<Gamepad>)

Sends a GamepadEvent::Button event with a magnitude of 1.0 in the direction defined by self on the provided Gamepad.

source§

fn release_as_gamepad(&self, world: &mut World, gamepad: Option<Gamepad>)

Sends a GamepadEvent::Button event with a magnitude of 0.0 in the direction defined by self on the provided Gamepad.

source§

impl Buttonlike for KeyCode

source§

fn pressed(&self, input_store: &CentralInputStore, _gamepad: Gamepad) -> bool

Checks if the specified key is currently pressed down.

source§

fn press(&self, world: &mut World)

Sends a fake KeyboardInput event to the world with ButtonState::Pressed.

§Note

The logical_key and window fields will be filled with placeholder values.

source§

fn release(&self, world: &mut World)

Sends a fake KeyboardInput event to the world with ButtonState::Released.

§Note

The logical_key and window fields will be filled with placeholder values.

source§

impl Buttonlike for MouseButton

source§

fn pressed(&self, input_store: &CentralInputStore, _gamepad: Gamepad) -> bool

Checks if the specified button is currently pressed down.

source§

fn press(&self, world: &mut World)

Sends a fake MouseButtonInput event to the world with ButtonState::Pressed.

§Note

The window field will be filled with a placeholder value.

source§

fn release(&self, world: &mut World)

Sends a fake MouseButtonInput event to the world with ButtonState::Released.

§Note

The window field will be filled with a placeholder value.

source§

impl Buttonlike for GamepadButton

source§

fn pressed(&self, input_store: &CentralInputStore, _gamepad: Gamepad) -> bool

WARNING: The supplied gamepad is ignored, as the button is already specific to a gamepad.

source§

fn press(&self, world: &mut World)

source§

fn release(&self, world: &mut World)

Implementors§