#[non_exhaustive]pub struct Animation {
pub current: AnimValue,
pub target: AnimValue,
pub velocity: AnimChannels,
pub timing: Timing,
pub started_at: Instant,
pub last_step: Instant,
pub from: Option<AnimValue>,
/* private fields */
}Expand description
In-flight animation state for one (node, prop) pair. Stored on
crate::state::UiState keyed by (ComputedId, AnimProp).
current is the read-back view consumed by write_prop — for
AnimValue::Color that’s u8 rgba. The integrator’s per-frame
motion near equilibrium is sub-integer in rgb units (typical
vel * dt ≈ 0.1–0.4 once the spring is close to target), so
integrating against the rounded view loses fractional progress
every frame and the integrator freezes a few rgb units off
target. current_precise is the lossless f32 mirror integrators
actually read and write across ticks.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.current: AnimValueCurrent sampled value — the read-back view write_prop consumes
(u8-rounded for colors; see struct docs).
target: AnimValueValue the animation is heading toward. Must be the same
AnimValue variant as current.
velocity: AnimChannelsPer-channel velocity — spring integrator state. Zero for tweens.
timing: TimingMotion model driving this animation.
started_at: InstantWhen the animation (or, after a retarget, the current tween segment) began. Tweens measure elapsed time from here.
last_step: InstantInstant of the previous Animation::step; the next step
integrates now - last_step, clamped to 64 ms.
from: Option<AnimValue>For tweens, the value at started_at. Springs are fully
determined by current+velocity, so from stays None.
Implementations§
Source§impl Animation
impl Animation
Sourcepub fn new(
current: AnimValue,
target: AnimValue,
timing: Timing,
now: Instant,
) -> Self
pub fn new( current: AnimValue, target: AnimValue, timing: Timing, now: Instant, ) -> Self
Start an animation at current heading toward target, with
zero initial velocity and clocks set to now.
Sourcepub fn retarget(&mut self, target: AnimValue, now: Instant)
pub fn retarget(&mut self, target: AnimValue, now: Instant)
Re-target a running animation. Current value and velocity carry
over so interrupted motion eases from where it is, not from rest.
For tweens, from snaps to the current sample so the new curve
starts there; the tween clock resets.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Animation
impl RefUnwindSafe for Animation
impl Send for Animation
impl Sync for Animation
impl Unpin for Animation
impl UnsafeUnpin for Animation
impl UnwindSafe for Animation
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.