Expand description
Provides the core data structures for managing lists of keyframes and their progress.
Structs§
- KeyList
- List of Progress is stored by ID. Each specific ID has a specific timing and different progress.
- Micro
KeyList - Progress
List - TRES16
Bits - TRES32
Bits
Traits§
- GetValue
ByGeneric - GetValue
ByRange - Progress
Resolution - Using f32 for progress (0.0 to 1.0) is inefficient for large-scale systems. While switching to integers like i8 (using its range, e.g., 127 steps) saves memory, it introduces significant quantization errors. For example, a 1.5-second animation at 60FPS requires a per-frame progress step of 127 steps / (1.5s * 60fps) \approx 1.41. Since i8 can only store integers, rounding this to 1 discards 0.41, causing a 41% error (0.41 / 1.0) on that frame’s increment, which accumulates and leads to jerky or inaccurate animations. Maximum animation error = (0.5/integer) * 100 %
- Timing
Resolution - Timing Resolution is the trait that defines the resolution of time. example u16 is ranging from 0 to 65535. So, it’s value would be milliseconds. And now time range becomes 0 to 65.535 seconds. similarly u32 is ranging from 0 to 4294967295. but here’s the twist, it’s value is so huge that it can represent time up to 49.7 days. who need 49.7 days to animate? So, it’s value becomes microseconds. And then range becomes 0 to 42.9 seconds. f32 is available but not recommended for time resolution as it has a limited precision.