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
InputMap
component, which stores an entity-specific mapping between the assorted input streams and an internal repesentation 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: 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 thepressed
andjust_pressed
fields of theActionState
each frame- labeled [
InputManagerSystem::Reset
]
- labeled [
update_action_state
, which collectsInput
resources to update theActionState
- labeled
InputManagerSystem::Update
- labeled
update_action_state_from_interaction
, for triggering actions from buttons- powers the
ActionStateDriver
component baseod on anInteraction
component - labeled
InputManagerSystem::Update
- powers the
release_on_disable
, which resets action states whenToggleActions
is 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 T where
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for T where
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
Return the T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist. Read more
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
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>
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
. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
fn as_any(&self) -> &(dyn Any + 'static)
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. Read more
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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. Read more
impl<T> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using data from the given [World]
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more