pub struct ActionStateDriver<A: Actionlike> {
pub action: A,
pub entity: Entity,
}
Expand description
A component that allows the attached entity to drive the ActionState
of the associated entity
Examples
By default, update_action_state_from_interaction
uses this component
in order to connect bevy::ui
buttons to the corresponding ActionState
.
use bevy::prelude::*;
use leafwing_input_manager::prelude::*;
#[derive(Actionlike, Clone, Copy)]
enum DanceDance {
Left,
Right,
Up,
Down,
}
// Spawn entity to track dance inputs
let mut world = World::new();
let dance_tracker = world
.spawn()
.insert(ActionState::<DanceDance>::default())
.id();
// Spawn a button, which is wired up to the dance tracker
// When used with InputManagerPlugin<DanceDance>, this button will press the DanceDance::Left action when it is pressed.
world
.spawn()
.insert_bundle(ButtonBundle::default())
// This component links the button to the entity with the `ActionState` component
.insert(ActionStateDriver {
action: DanceDance::Left,
entity: dance_tracker,
});
Writing your own systems that use the ActionStateDriver
component is easy,
although this should be reserved for cases where the entity whose value you want to check
is distinct from the entity whose ActionState
you want to set.
Check the source code of update_action_state_from_interaction
for an example of how this is done.
Fields
action: A
The action triggered by this entity
entity: Entity
The entity whose action state should be updated
Trait Implementations
sourceimpl<A: Clone + Actionlike> Clone for ActionStateDriver<A>
impl<A: Clone + Actionlike> Clone for ActionStateDriver<A>
sourcefn clone(&self) -> ActionStateDriver<A>
fn clone(&self) -> ActionStateDriver<A>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<A: Actionlike> Component for ActionStateDriver<A> where
Self: Send + Sync + 'static,
impl<A: Actionlike> Component for ActionStateDriver<A> where
Self: Send + Sync + 'static,
type Storage = TableStorage
sourceimpl<A: Hash + Actionlike> Hash for ActionStateDriver<A>
impl<A: Hash + Actionlike> Hash for ActionStateDriver<A>
sourceimpl<A: PartialEq + Actionlike> PartialEq<ActionStateDriver<A>> for ActionStateDriver<A>
impl<A: PartialEq + Actionlike> PartialEq<ActionStateDriver<A>> for ActionStateDriver<A>
sourcefn eq(&self, other: &ActionStateDriver<A>) -> bool
fn eq(&self, other: &ActionStateDriver<A>) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &ActionStateDriver<A>) -> bool
fn ne(&self, other: &ActionStateDriver<A>) -> bool
This method tests for !=
.
impl<A: Copy + Actionlike> Copy for ActionStateDriver<A>
impl<A: Eq + Actionlike> Eq for ActionStateDriver<A>
impl<A: Actionlike> StructuralEq for ActionStateDriver<A>
impl<A: Actionlike> StructuralPartialEq for ActionStateDriver<A>
Auto Trait Implementations
impl<A> RefUnwindSafe for ActionStateDriver<A> where
A: RefUnwindSafe,
impl<A> Send for ActionStateDriver<A>
impl<A> Sync for ActionStateDriver<A>
impl<A> Unpin for ActionStateDriver<A> where
A: Unpin,
impl<A> UnwindSafe for ActionStateDriver<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> DynHash for T where
T: DynEq + Hash,
impl<T> DynHash for T where
T: DynEq + Hash,
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
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>
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
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