pub struct DecodedClip {
pub dims: [u32; 3],
pub pivot: [f32; 3],
pub voxel_world_size: f32,
pub occ_words_per_col: u32,
pub loop_mode: LoopMode,
pub frames: Vec<VoxelFrame>,
pub dirs: Vec<Vec<u32>>,
pub durations: Vec<u32>,
}Expand description
A decoded clip: every frame expanded to a full VoxelFrame plus its
recomputed dirs (parallel to frames[i].colors) and resolved
durations. The runtime flipbook.
Fields§
§dims: [u32; 3]§pivot: [f32; 3]§voxel_world_size: f32§occ_words_per_col: u32§loop_mode: LoopMode§frames: Vec<VoxelFrame>§dirs: Vec<Vec<u32>>Per-frame surface-normal LUT indices, parallel to
frames[i].colors.
durations: Vec<u32>Implementations§
Source§impl DecodedClip
impl DecodedClip
pub fn frame_count(&self) -> usize
Sourcepub fn total_ms(&self) -> u32
pub fn total_ms(&self) -> u32
Total loop length in ms (sum of frame durations), saturating rather than overflowing for absurdly long clips.
Sourcepub fn frame_at(&self, elapsed_ms: u32) -> usize
pub fn frame_at(&self, elapsed_ms: u32) -> usize
The frame index to show after elapsed_ms of playback, honouring
the clip’s LoopMode and per-frame durations. Pure — the host
(or the facade’s clip-instance clocks) drives set_clip_instance_frame
from this. Empty clip ⇒ 0.
LoopMode::Loop: wraps modulo the total length.LoopMode::Once: holds the last frame past the end.LoopMode::PingPong: bounces0→N-1→0over2·total.
Trait Implementations§
Source§impl Clone for DecodedClip
impl Clone for DecodedClip
Source§fn clone(&self) -> DecodedClip
fn clone(&self) -> DecodedClip
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 moreAuto Trait Implementations§
impl Freeze for DecodedClip
impl RefUnwindSafe for DecodedClip
impl Send for DecodedClip
impl Sync for DecodedClip
impl Unpin for DecodedClip
impl UnsafeUnpin for DecodedClip
impl UnwindSafe for DecodedClip
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> 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