pub struct MotionRuntime { /* private fields */ }Expand description
Stores animations, advances active values, and queues lifecycle events.
§Examples
use aura_anim_core::{MotionRuntime, timing::Timing};
use std::time::Duration;
let mut runtime = MotionRuntime::new();
let opacity = runtime.motion_with(0.0_f32, Timing::new(100.0));
opacity.transition_to(1.0, &mut runtime).unwrap();
runtime.tick(Duration::from_millis(50));
assert_eq!(opacity.value(&runtime).unwrap(), 0.5);
assert!(opacity.is_active(&runtime).unwrap());
assert!(runtime.events().is_empty());Implementations§
Source§impl MotionRuntime
impl MotionRuntime
Sourcepub fn new() -> MotionRuntime
pub fn new() -> MotionRuntime
Creates an empty motion runtime.
Sourcepub fn motion<T>(&mut self, initial: T) -> Motion<T>where
T: Animatable,
pub fn motion<T>(&mut self, initial: T) -> Motion<T>where
T: Animatable,
Inserts an idle motion with the default transition timing.
Sourcepub fn motion_with<T>(&mut self, initial: T, timing: Timing) -> Motion<T>where
T: Animatable,
pub fn motion_with<T>(&mut self, initial: T, timing: Timing) -> Motion<T>where
T: Animatable,
Inserts an idle motion with the provided transition timing.
Sourcepub fn insert<T>(
&mut self,
animation: impl Animation<T>,
transition: Timing,
) -> Motion<T>where
T: Animatable,
pub fn insert<T>(
&mut self,
animation: impl Animation<T>,
transition: Timing,
) -> Motion<T>where
T: Animatable,
Inserts an animation that remains stored after it settles.
Sourcepub fn play_once<T>(&mut self, animation: impl Animation<T>) -> Motion<T>where
T: Animatable,
pub fn play_once<T>(&mut self, animation: impl Animation<T>) -> Motion<T>where
T: Animatable,
Inserts an animation that is removed after it settles.
Sourcepub fn insert_with_policy<T>(
&mut self,
animation: impl Animation<T>,
transition: Timing,
retain_policy: RetainPolicy,
) -> Motion<T>where
T: Animatable,
pub fn insert_with_policy<T>(
&mut self,
animation: impl Animation<T>,
transition: Timing,
retain_policy: RetainPolicy,
) -> Motion<T>where
T: Animatable,
Inserts an animation with transition timing and a retention policy.
Sourcepub fn tick_at(&mut self, now: Instant)
pub fn tick_at(&mut self, now: Instant)
Advances active animations using elapsed wall-clock time.
The first call establishes the clock origin and advances by zero.
Sourcepub fn events(&self) -> &[MotionEvent]
pub fn events(&self) -> &[MotionEvent]
Returns queued lifecycle events without consuming them.
Sourcepub fn take_events(&mut self) -> Vec<MotionEvent>
pub fn take_events(&mut self) -> Vec<MotionEvent>
Takes all queued lifecycle events.
Events remain queued until they are taken or explicitly cleared.
Sourcepub fn clear_events(&mut self)
pub fn clear_events(&mut self)
Removes all queued lifecycle events.
Sourcepub fn pending_event_count(&self) -> usize
pub fn pending_event_count(&self) -> usize
Returns the number of queued lifecycle events.
Sourcepub fn active_count(&self) -> usize
pub fn active_count(&self) -> usize
Returns the number of animations currently marked active.
Sourcepub fn has_active(&self) -> bool
pub fn has_active(&self) -> bool
Returns whether at least one animation is active.
Sourcepub fn motion_count(&self) -> usize
pub fn motion_count(&self) -> usize
Returns the number of stored animations.
Sourcepub fn slot_capacity(&self) -> usize
pub fn slot_capacity(&self) -> usize
Returns the allocated capacity of the runtime slot storage.
Sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Releases unused slot and queue capacity.
Sourcepub fn value<T>(&self, motion: Motion<T>) -> Result<&T, MotionError>where
T: Animatable,
pub fn value<T>(&self, motion: Motion<T>) -> Result<&T, MotionError>where
T: Animatable,
Returns the current value for motion.
Sourcepub fn state<T>(&self, motion: Motion<T>) -> Result<AnimationState, MotionError>where
T: Animatable,
pub fn state<T>(&self, motion: Motion<T>) -> Result<AnimationState, MotionError>where
T: Animatable,
Returns the lifecycle state for motion.
Sourcepub fn playback<T>(&self, motion: Motion<T>) -> Result<PlaybackId, MotionError>where
T: Animatable,
pub fn playback<T>(&self, motion: Motion<T>) -> Result<PlaybackId, MotionError>where
T: Animatable,
Returns the ID of the motion’s current playback.
Sourcepub fn is_active<T>(&self, motion: Motion<T>) -> Result<bool, MotionError>where
T: Animatable,
pub fn is_active<T>(&self, motion: Motion<T>) -> Result<bool, MotionError>where
T: Animatable,
Returns whether motion is active.
Sourcepub fn transition_to<T>(
&mut self,
motion: Motion<T>,
target: T,
) -> Result<(), MotionError>where
T: Animatable,
pub fn transition_to<T>(
&mut self,
motion: Motion<T>,
target: T,
) -> Result<(), MotionError>where
T: Animatable,
Transitions motion toward target.
Sourcepub fn transition_to_tracked<T>(
&mut self,
motion: Motion<T>,
target: T,
) -> Result<PlaybackId, MotionError>where
T: Animatable,
pub fn transition_to_tracked<T>(
&mut self,
motion: Motion<T>,
target: T,
) -> Result<PlaybackId, MotionError>where
T: Animatable,
Transitions motion toward target and returns its new playback ID.
Sourcepub fn play<T, P, Kind>(
&mut self,
motion: Motion<T>,
playback: P,
) -> Result<(), MotionError>where
T: Animatable,
P: IntoMotionAnimation<T, Kind>,
pub fn play<T, P, Kind>(
&mut self,
motion: Motion<T>,
playback: P,
) -> Result<(), MotionError>where
T: Animatable,
P: IntoMotionAnimation<T, Kind>,
Replaces the animation associated with motion.
Sourcepub fn play_tracked<T, P, Kind>(
&mut self,
motion: Motion<T>,
playback: P,
) -> Result<PlaybackId, MotionError>where
T: Animatable,
P: IntoMotionAnimation<T, Kind>,
pub fn play_tracked<T, P, Kind>(
&mut self,
motion: Motion<T>,
playback: P,
) -> Result<PlaybackId, MotionError>where
T: Animatable,
P: IntoMotionAnimation<T, Kind>,
Replaces the animation associated with motion and returns its playback ID.
Sourcepub fn command<T>(
&mut self,
motion: Motion<T>,
command: AnimationCommand,
) -> Result<(), MotionError>where
T: Animatable,
pub fn command<T>(
&mut self,
motion: Motion<T>,
command: AnimationCommand,
) -> Result<(), MotionError>where
T: Animatable,
Applies a command to motion.
Sourcepub fn command_all(&mut self, command: AnimationCommand)
pub fn command_all(&mut self, command: AnimationCommand)
Applies command to every stored motion.
This includes idle, running, paused, and settled motions. Commands keep
their normal per-animation semantics, including terminal events and
RetainPolicy::DropWhenSettled removal.
Sourcepub fn remove<T>(&mut self, motion: Motion<T>) -> Result<(), MotionError>where
T: Animatable,
pub fn remove<T>(&mut self, motion: Motion<T>) -> Result<(), MotionError>where
T: Animatable,
Removes the animation referenced by motion.
Trait Implementations§
Source§impl Default for MotionRuntime
impl Default for MotionRuntime
Source§fn default() -> MotionRuntime
fn default() -> MotionRuntime
Auto Trait Implementations§
impl !RefUnwindSafe for MotionRuntime
impl !Send for MotionRuntime
impl !Sync for MotionRuntime
impl !UnwindSafe for MotionRuntime
impl Freeze for MotionRuntime
impl Unpin for MotionRuntime
impl UnsafeUnpin for MotionRuntime
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>. 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>
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)
&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.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<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
Source§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Application.