pub struct InputManagerPlugin<A: Actionlike> { /* private fields */ }
Expand description

A [Plugin] that collects ButtonInput from disparate sources, producing an ActionState that can be conveniently checked

This plugin needs to be passed in an Actionlike enum type that you’ve created for your game. Each variant represents a “virtual button” whose state is stored in an ActionState struct.

Each InputManagerBundle contains:

  • an InputMap component, which stores an entity-specific mapping between the assorted input streams and an internal representation of “actions”
  • an ActionState component, which stores the current input state for that entity in a source-agnostic fashion

If you have more than one distinct type of action (e.g., menu actions, camera actions, and player actions), consider creating multiple Actionlike enums and adding a copy of this plugin for each Actionlike type.

§Systems

All systems added by this plugin can be dynamically enabled and disabled by setting the value of the ToggleActions<A> resource is set. This can be useful when working with states to pause the game, navigate menus, or so on.

WARNING: These systems run during [PreUpdate]. If you have systems that care about inputs and actions that also run during this stage, you must define an ordering between your systems or behavior will be very erratic. The stable system sets for these systems are available under InputManagerSystem enum.

Complete list:

Implementations§

source§

impl<A: Actionlike> InputManagerPlugin<A>

source

pub fn server() -> Self

Creates a version of the plugin intended to run on the server

Inputs will not be processed; instead, ActionState should be copied directly from the state provided by the client, or constructed from ActionDiff event streams.

Trait Implementations§

source§

impl<A: Actionlike> Default for InputManagerPlugin<A>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<A: Actionlike + TypePath> Plugin for InputManagerPlugin<A>

source§

fn build(&self, app: &mut App)

Configures the [App] to which this plugin is added.
§

fn ready(&self, _app: &App) -> bool

Has the plugin finished its setup? This can be useful for plugins that need something asynchronous to happen before they can finish their setup, like the initialization of a renderer. Once the plugin is ready, finish should be called.
§

fn finish(&self, _app: &mut App)

Finish adding this plugin to the [App], once all plugins registered are ready. This can be useful for plugins that depends on another plugin asynchronous setup, like the renderer.
§

fn cleanup(&self, _app: &mut App)

Runs after all plugins are built and finished, but before the app schedule is executed. This can be useful if you have some resource that other plugins need during their build step, but after build you want to remove it and send it to another thread.
§

fn name(&self) -> &str

Configures a name for the [Plugin] which is primarily used for checking plugin uniqueness and debugging.
§

fn is_unique(&self) -> bool

If the plugin can be meaningfully instantiated several times in an [App], override this method to return false.

Auto Trait Implementations§

§

impl<A> RefUnwindSafe for InputManagerPlugin<A>
where A: RefUnwindSafe,

§

impl<A> Send for InputManagerPlugin<A>

§

impl<A> Sync for InputManagerPlugin<A>

§

impl<A> Unpin for InputManagerPlugin<A>
where A: Unpin,

§

impl<A> UnwindSafe for InputManagerPlugin<A>
where A: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the T [ShaderType] for self. When used in [AsBindGroup] derives, it is safe to assume that all images in self exist.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: 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.
§

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.
§

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.
§

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.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromWorld for T
where T: Default,

§

fn from_world(_world: &mut World) -> T

Creates Self using data from the given [World].
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<Marker, T> Plugins<Marker> for T
where T: Plugins<Marker>,

§

impl<T> Settings for T
where T: 'static + Send + Sync,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,