pub struct AnimationStateMachine {
pub clips: Arc<[AnimationClip]>,
pub states: Vec<AnimationState>,
pub transitions: Vec<AnimationTransition>,
pub current_state: String,
pub current_time: f32,
pub active_blend: Option<ActiveBlend>,
/* private fields */
}Expand description
ECS component — full animation state machine with cross-fade blending.
§Usage
ⓘ
let mut fsm = AnimationStateMachine::new(
"idle",
clips,
vec![
AnimationState { name: "idle".into(), clip_index: 0, looped: true, speed: 1.0 },
AnimationState { name: "run".into(), clip_index: 1, looped: true, speed: 1.2 },
AnimationState { name: "jump".into(), clip_index: 2, looped: false, speed: 1.0 },
],
vec![
AnimationTransition { from: "idle".into(), to: "run".into(), blend_duration: 0.2, trigger: Some("run".into()), has_exit_time: false },
AnimationTransition { from: "run".into(), to: "idle".into(), blend_duration: 0.3, trigger: Some("stop".into()), has_exit_time: false },
AnimationTransition { from: "*".into(), to: "jump".into(), blend_duration: 0.1, trigger: Some("jump".into()), has_exit_time: false },
],
);
fsm.trigger("run");Fields§
§clips: Arc<[AnimationClip]>§states: Vec<AnimationState>§transitions: Vec<AnimationTransition>§current_state: String§current_time: f32§active_blend: Option<ActiveBlend>Implementations§
Source§impl AnimationStateMachine
impl AnimationStateMachine
pub fn new( initial_state: &str, clips: Arc<[AnimationClip]>, states: Vec<AnimationState>, transitions: Vec<AnimationTransition>, ) -> Self
Sourcepub fn trigger(&mut self, name: &str)
pub fn trigger(&mut self, name: &str)
Queue a trigger to be evaluated on the next animation_state_machine_update.
Sourcepub fn drain_triggers(&mut self) -> Vec<String>
pub fn drain_triggers(&mut self) -> Vec<String>
Drain and return all pending triggers (consumed by the update system).
pub fn find_state(&self, name: &str) -> Option<&AnimationState>
pub fn current_clip_index(&self) -> Option<usize>
pub fn current_clip_duration(&self) -> f32
pub fn current_speed(&self) -> f32
pub fn is_current_looped(&self) -> bool
Sourcepub fn find_transition(
&self,
from: &str,
trigger: Option<&str>,
clip_finished: bool,
) -> Option<&AnimationTransition>
pub fn find_transition( &self, from: &str, trigger: Option<&str>, clip_finished: bool, ) -> Option<&AnimationTransition>
Find the first matching transition (trigger or exit-time based).
Trait Implementations§
Source§impl Clone for AnimationStateMachine
impl Clone for AnimationStateMachine
Source§fn clone(&self) -> AnimationStateMachine
fn clone(&self) -> AnimationStateMachine
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Component for AnimationStateMachine
impl Component for AnimationStateMachine
fn storage_type() -> StorageType
Auto Trait Implementations§
impl Freeze for AnimationStateMachine
impl RefUnwindSafe for AnimationStateMachine
impl Send for AnimationStateMachine
impl Sync for AnimationStateMachine
impl Unpin for AnimationStateMachine
impl UnsafeUnpin for AnimationStateMachine
impl UnwindSafe for AnimationStateMachine
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
Mutably borrows from an owned value. Read more
Source§impl<T> BundleExt for Twhere
T: Bundle,
impl<T> BundleExt for Twhere
T: Bundle,
fn with<C>(self, component: C) -> DynamicBundle<Self, C>where
C: Component,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> 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)
Convert
&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)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more