pub struct ActionState<A: ActionLike> { /* private fields */ }Expand description
Sim-side gameplay input: fed from repose events each frame, read by
fixed-step systems each tick. Edges (just_pressed/just_released)
clear at the END of each tick (end_tick,
registered last), so compose-fed events survive until the tick’s
systems run. Frame-scope readers call
clear_edges after consuming.
Implementations§
Source§impl<A: ActionLike> ActionState<A>
impl<A: ActionLike> ActionState<A>
pub fn new(map: ActionMap<A>) -> Self
pub fn map(&self) -> &ActionMap<A>
Sourcepub fn end_tick(&mut self)
pub fn end_tick(&mut self)
Edge rollover for the tick end: edges clear, levels persist.
Frame-scope readers use clear_edges instead.
Sourcepub fn clear_edges(&mut self)
pub fn clear_edges(&mut self)
Clear edges outside the schedule (after frame-scope consumption).
Sourcepub fn set_contexts(&mut self, contexts: &[&str])
pub fn set_contexts(&mut self, contexts: &[&str])
Switch the active context set (phase gating, e.g. menu vs play).
Empty set with contexts defined means only context-free actions fire.
Pending edges drop only when the set actually changes: re-setting
the same contexts every frame (the normal pump pattern) keeps them.
Levels (pressed) always track hardware truthfully.
Sourcepub fn key(&mut self, chord: &KeyChord, down: bool)
pub fn key(&mut self, chord: &KeyChord, down: bool)
Feed a keyboard chord press/release from the runner.
Sourcepub fn mouse(&mut self, button: PointerButton, down: bool)
pub fn mouse(&mut self, button: PointerButton, down: bool)
Feed a mouse button press/release.
Sourcepub fn pad(&mut self, button: GamepadButton, down: bool)
pub fn pad(&mut self, button: GamepadButton, down: bool)
Feed a gamepad button press/release.
Sourcepub fn axis(&mut self, axis: GamepadAxis, value: f32)
pub fn axis(&mut self, axis: GamepadAxis, value: f32)
Feed an axis value; threshold bindings flip on crossing.
Sourcepub fn axis_value(&self, axis: GamepadAxis) -> f32
pub fn axis_value(&self, axis: GamepadAxis) -> f32
Latest value for an axis (0.0 if never fed).
Sourcepub fn just_pressed(&self, action: &A) -> bool
pub fn just_pressed(&self, action: &A) -> bool
Started this tick (and live in the active context, not consumed).
Sourcepub fn just_released(&self, action: &A) -> bool
pub fn just_released(&self, action: &A) -> bool
Released this tick.
Sourcepub fn consume(&mut self, action: &A) -> bool
pub fn consume(&mut self, action: &A) -> bool
Swallow an action so later readers skip it (UI consumed the click). Returns true while the action is held.
pub fn consume_all(&mut self)
Sourcepub fn mock(&mut self, action: &A, down: bool)
pub fn mock(&mut self, action: &A, down: bool)
Drive an action without hardware (cutscenes, AI, tests).
Sourcepub fn clear_consumed(&mut self)
pub fn clear_consumed(&mut self)
Clear consumption (fresh frame handoff from UI).
Trait Implementations§
Source§impl<A: ActionLike> Component for ActionState<A>
impl<A: ActionLike> Component for ActionState<A>
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::SparseSet
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::SparseSet
Source§type Mutability = Mutable
type Mutability = Mutable
Component<Mutability = Mutable>,
while immutable components will instead have Component<Mutability = Immutable>. Read moreSource§fn register_required_components(
_requiree: ComponentId,
required_components: &mut RequiredComponentsRegistrator<'_, '_>,
)
fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )
Source§fn clone_behavior() -> ComponentCloneBehavior
fn clone_behavior() -> ComponentCloneBehavior
Source§fn relationship_accessor() -> Option<ComponentRelationshipAccessor<Self>>
fn relationship_accessor() -> Option<ComponentRelationshipAccessor<Self>>
ComponentRelationshipAccessor required for working with relationships in dynamic contexts. Read moreSource§fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_discard() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_discard() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
EntityMapper. This is used to remap entities in contexts like scenes and entity cloning.
When deriving Component, this is populated by annotating fields containing entities with #[entities] Read moreSource§impl<A: Debug + ActionLike> Debug for ActionState<A>
impl<A: Debug + ActionLike> Debug for ActionState<A>
impl<A: ActionLike> Resource for ActionState<A>
Auto Trait Implementations§
impl<A> Freeze for ActionState<A>
impl<A> RefUnwindSafe for ActionState<A>
impl<A> Send for ActionState<A>
impl<A> Sync for ActionState<A>
impl<A> Unpin for ActionState<A>
impl<A> UnsafeUnpin for ActionState<A>
impl<A> UnwindSafe for ActionState<A>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut ComponentsRegistrator<'_>, ) -> impl Iterator<Item = ComponentId> + use<C>
Source§fn get_component_ids(
components: &Components,
) -> impl Iterator<Item = Option<ComponentId>>
fn get_component_ids( components: &Components, ) -> impl Iterator<Item = Option<ComponentId>>
Source§impl<C> BundleFromComponents for Cwhere
C: Component,
impl<C> BundleFromComponents for Cwhere
C: Component,
impl<T> ConditionalSend for Twhere
T: Send,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§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.Source§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.