Struct leafwing_input_manager::plugin::InputManagerPlugin
source · 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
InputMapcomponent, which stores an entity-specific mapping between the assorted input streams and an internal representation of “actions” - an
ActionStatecomponent, 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 [CoreSet::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:
tick_action_state, which resets thepressedandjust_pressedfields of theActionStateeach frameupdate_action_state, which collectsInputresources to update theActionStateupdate_action_state_from_interaction, for triggering actions from buttons- powers the
ActionStateDrivercomponent baseod on anInteractioncomponent
- powers the
release_on_disable, which resets action states whenToggleActionsis flipped, to avoid persistent presses.
Implementations§
source§impl<A: Actionlike> InputManagerPlugin<A>
impl<A: Actionlike> InputManagerPlugin<A>
sourcepub fn server() -> Self
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>
impl<A: Actionlike> Default for InputManagerPlugin<A>
source§impl<A: Actionlike> Plugin for InputManagerPlugin<A>
impl<A: Actionlike> Plugin for InputManagerPlugin<A>
§fn setup(&self, _app: &mut App)
fn setup(&self, _app: &mut App)
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§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
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
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.§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere 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>
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 + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
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.§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self using data from the given [World]