Byte Engine Docs
View on docs.rs

inertialization

Generated Rust API reference for byte_engine.

byte_engine / animation / inertialization


Module inertialization

Retained local-pose inertialization for discontinuity-free transitions.

Quick Reference

ItemKindDescription
PoseInertializerstructThe PoseInertializer struct retains per-node offsets and velocities for a smooth pose transition.
InertializationErrorenumErrors returned when a pose transition cannot be initialized or advanced.

Structs

PoseInertializer

struct PoseInertializer {
    // [REDACTED: Private Fields]
}

Defined in crates/byte-engine/src/animation/inertialization.rs:15-20

The PoseInertializer struct retains per-node offsets and velocities for a smooth pose transition.

Allocate it once for a skeleton, call Self::begin when a transition starts, then call Self::apply with the destination pose each frame.

Implementations

  • fn new(node_count: usize) -> Self

    Creates cleared transition state for a fixed node count.

  • fn node_count(&self) -> usize

    Returns the node count required for poses passed to Self::begin and Self::apply.

  • fn is_active(&self) -> bool

    Returns whether Self::apply is still smoothing a transition.

  • fn begin(&mut self, source_previous: &[LocalTransform], source: &[LocalTransform], destination_previous: &[LocalTransform], destination: &[LocalTransform], sample_delta: MediaTime, duration: MediaTime) -> Result<(), InertializationError>

    Related: MediaTime, InertializationError

    Captures the positional and rotational discontinuity between two moving poses.

    sample_delta is the time between each previous/current pose pair. A

    zero transition duration clears the inertializer so the destination pose

    takes effect immediately.

  • fn apply(&mut self, destination: &[LocalTransform], delta: MediaTime, output: &mut [LocalTransform]) -> Result<(), InertializationError>

    Related: MediaTime, InertializationError

    Advances retained offsets and writes an inertialized destination pose.

    Once the configured duration elapses, this writes the destination exactly

    and marks the transition inactive.

  • fn clear(&mut self)

    Stops the current transition without changing allocated state.

Trait Implementations

impl ArchivePointee for PoseInertializer
  • type ArchivedMetadata = ()
  • fn pointer_metadata(_: &<T as ArchivePointee>::ArchivedMetadata) -> <T as Pointee>::Metadata
impl<ST> CastableFrom for PoseInertializer
impl Clone for PoseInertializer
impl Debug for PoseInertializer
  • fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result
impl Downcast for PoseInertializer
  • fn into_any(self: Box<T>) -> Box<dyn Any>
  • fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
  • fn as_any(&self) -> &dyn Any
  • fn as_any_mut(&mut self) -> &mut dyn Any
impl DowncastSend for PoseInertializer
  • fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>
impl DowncastSync for PoseInertializer
  • fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>
impl Instrument for PoseInertializer
impl LayoutRaw for PoseInertializer
  • fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T, N1> Niching for PoseInertializer
  • unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
  • fn resolve_niched(out: Place<NichedOption<T, N1>>)
impl Pointable for PoseInertializer
  • const ALIGN: usize
  • type Init = T
  • unsafe fn init(init: <T as Pointable>::Init) -> usize
  • unsafe fn deref<'a>(ptr: usize) -> &'a T
  • unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
  • unsafe fn drop(ptr: usize)
impl Pointee for PoseInertializer
  • type Metadata = ()
impl Read for PoseInertializer
impl WithSubscriber for PoseInertializer

Enums

InertializationError

enum InertializationError {
    PoseLength {
        expected: usize,
        actual: usize,
    },
    InvalidSampleDelta,
    InvalidDuration,
    InvalidAdvanceDelta,
}

Defined in crates/byte-engine/src/animation/inertialization.rs:191-205

Errors returned when a pose transition cannot be initialized or advanced.

Variants

  • PoseLength

    A pose does not match the inertializer's node count.

  • InvalidSampleDelta

    The interval between source samples is zero, negative, or non-finite.

  • InvalidDuration

    The requested transition duration is negative or non-finite.

  • InvalidAdvanceDelta

    The frame interval used to advance the transition is negative or non-finite.

Trait Implementations

impl ArchivePointee for InertializationError
  • type ArchivedMetadata = ()
  • fn pointer_metadata(_: &<T as ArchivePointee>::ArchivedMetadata) -> <T as Pointee>::Metadata
impl<ST> CastableFrom for InertializationError
impl Clone for InertializationError
impl Copy for InertializationError
impl Debug for InertializationError
  • fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result
impl Display for InertializationError
  • fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result
impl Downcast for InertializationError
  • fn into_any(self: Box<T>) -> Box<dyn Any>
  • fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
  • fn as_any(&self) -> &dyn Any
  • fn as_any_mut(&mut self) -> &mut dyn Any
impl DowncastSend for InertializationError
  • fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>
impl DowncastSync for InertializationError
  • fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>
impl Eq for InertializationError
impl<K> Equivalent for InertializationError
  • fn equivalent(&self, key: &K) -> bool
impl Error for InertializationError
impl Instrument for InertializationError
impl LayoutRaw for InertializationError
  • fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T, N1> Niching for InertializationError
  • unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
  • fn resolve_niched(out: Place<NichedOption<T, N1>>)
impl PartialEq for InertializationError
impl Pointable for InertializationError
  • const ALIGN: usize
  • type Init = T
  • unsafe fn init(init: <T as Pointable>::Init) -> usize
  • unsafe fn deref<'a>(ptr: usize) -> &'a T
  • unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
  • unsafe fn drop(ptr: usize)
impl Pointee for InertializationError
  • type Metadata = ()
impl Read for InertializationError
impl StructuralPartialEq for InertializationError
impl ToString for InertializationError
  • fn to_string(&self) -> String
impl WithSubscriber for InertializationError

On this page

Module inertializationQuick ReferenceStructsPoseInertializerImplementationsTrait Implementationsimpl ArchivePointee for PoseInertializerimpl<ST> CastableFrom for PoseInertializerimpl Clone for PoseInertializerimpl Debug for PoseInertializerimpl Downcast for PoseInertializerimpl DowncastSend for PoseInertializerimpl DowncastSync for PoseInertializerimpl Instrument for PoseInertializerimpl LayoutRaw for PoseInertializerimpl<T, N1> Niching for PoseInertializerimpl Pointable for PoseInertializerimpl Pointee for PoseInertializerimpl Read for PoseInertializerimpl WithSubscriber for PoseInertializerEnumsInertializationErrorVariantsTrait Implementationsimpl ArchivePointee for InertializationErrorimpl<ST> CastableFrom for InertializationErrorimpl Clone for InertializationErrorimpl Copy for InertializationErrorimpl Debug for InertializationErrorimpl Display for InertializationErrorimpl Downcast for InertializationErrorimpl DowncastSend for InertializationErrorimpl DowncastSync for InertializationErrorimpl Eq for InertializationErrorimpl<K> Equivalent for InertializationErrorimpl Error for InertializationErrorimpl Instrument for InertializationErrorimpl LayoutRaw for InertializationErrorimpl<T, N1> Niching for InertializationErrorimpl PartialEq for InertializationErrorimpl Pointable for InertializationErrorimpl Pointee for InertializationErrorimpl Read for InertializationErrorimpl StructuralPartialEq for InertializationErrorimpl ToString for InertializationErrorimpl WithSubscriber for InertializationError