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 repesentation 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: Theses systems run during [CoreStage::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 labels for these systems are available under InputManagerSystem enum.
Complete list:
tick_action_state, which resets thepressedandjust_pressedfields of theActionStateeach frame- labeled [
InputManagerSystem::Reset]
- labeled [
update_action_state, which collectsInputresources to update theActionState- labeled
InputManagerSystem::Update
- labeled
update_action_state_from_interaction, for triggering actions from buttons- powers the
ActionStateDrivercomponent baseod on anInteractioncomponent - labeled
InputManagerSystem::Update
- powers the
release_on_disable, which resets action states whenToggleActionsis flipped, to avoid persistent presses.
Implementations
sourceimpl<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
sourceimpl<A: Actionlike> Default for InputManagerPlugin<A>
impl<A: Actionlike> Default for InputManagerPlugin<A>
sourceimpl<A: Actionlike> Plugin for InputManagerPlugin<A>
impl<A: Actionlike> Plugin for InputManagerPlugin<A>
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: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
fn as_bind_group_shader_type(
&self,
_images: &HashMap<Handle<Image>, <Image as RenderAsset>::PreparedAsset, RandomState, Global>
) -> U
T [ShaderType] for self. When used in [AsBindGroup]
derives, it is safe to assume that all images in self exist. Read moresourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
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. Read morefn 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. Read morefn 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. Read morefn 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. Read moreimpl<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]