A basic state machine for managing sprite animations.
Example usage:
```rust use rsanim::*; use std::collections::HashMap;
enum Animation { Idle, Run, }
struct Params { pub speed: f32, }
let mut statemachine = StateMachine::new( Animation::Idle, HashMap::from([ ( Animation::Idle, State { duration: 0.5, repeat: true, }, ), ( Animation::Run, State { duration: 1.0, repeat: true, }, ), ]), vec![ Transition { startstate: TransitionStartState::Node(Animation::Idle), endstate: TransitionEndState::Node(Animation::Run), trigger: Trigger::Condition(Box::new(|x: &Params| x.speed > 0.0)), }, Transition { startstate: TransitionStartState::Node(Animation::Run), end_state: TransitionEndState::Node(Animation::Idle), trigger: Trigger::Condition(Box::new(|x: &Params| x.speed <= 0.0)), }, ], Params { speed: 0.0 }, ) .unwrap(); ```
Update the state machine as time passes:
rust
state_machine.update(delta_time);
Update the parameters that are used to determine conditional transitions:
rust
state_machine.update_parameters(&|x| {
x.speed = 1.0;
});
See examples/bevy.rs
.