Trait leafwing_input_manager::Actionlike
source · [−]pub trait Actionlike: Send + Sync + Clone + 'static {
const N_VARIANTS: usize;
fn get_at(index: usize) -> Option<Self>;
fn index(&self) -> usize;
fn variants() -> ActionIter<Self>ⓘNotable traits for ActionIter<A>impl<A: Actionlike> Iterator for ActionIter<A> type Item = A; { ... }
}Expand description
Allows a type to be used as a gameplay action in an input-agnostic fashion
Actions are modelled as “virtual buttons”, cleanly abstracting over messy, customizable inputs in a way that can be easily consumed by your game logic.
This trait should be implemented on the A type that you want to pass into InputManagerPlugin.
Generally, these types will be very small (often data-less) enums.
As a result, the APIs in this crate accept actions by value, rather than reference.
While Copy is not a required trait bound,
users are strongly encouraged to derive Copy on these enums whenever possible to improve ergonomics.
Example
use leafwing_input_manager::Actionlike;
#[derive(Actionlike, PartialEq, Eq, Clone, Copy, Hash)]
enum PlayerAction {
// Movement
Up,
Down,
Left,
Right,
// Abilities
Ability1,
Ability2,
Ability3,
Ability4,
Ultimate,
}Required Associated Constants
sourceconst N_VARIANTS: usize
const N_VARIANTS: usize
The number of variants of this action type
Required Methods
Provided Methods
sourcefn variants() -> ActionIter<Self>ⓘNotable traits for ActionIter<A>impl<A: Actionlike> Iterator for ActionIter<A> type Item = A;
fn variants() -> ActionIter<Self>ⓘNotable traits for ActionIter<A>impl<A: Actionlike> Iterator for ActionIter<A> type Item = A;
Iterates over the possible actions in the order they were defined