Module keylist

Module keylist 

Source
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.
MicroKeyList
ProgressList
TRES16Bits
TRES32Bits

Traits§

GetValueByGeneric
GetValueByRange
ProgressResolution
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 %
TimingResolution
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.