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

A [Plugin] that collects Input 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 an 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> 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 it’s setup? This can be useful for plugins that needs something asynchronous to happen before they can finish their setup, like renderer initialization. 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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for Twhere 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 Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any, 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.
§

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 Twhere 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 Twhere T: Default,

§

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

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

impl<T> Instrument for T

source§

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

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

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 Twhere 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 Twhere 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 Twhere 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>

source§

impl<T> WithSubscriber for T

source§

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

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 Twhere T: Plugins<Marker>,