code wiki / (root) / nx_animation_timeline.nx

nx_animation_timeline.nx

buildroot/runtime/nx_animation_timeline.nx

4153 B125 linesdepth 2pulls 2 transitivereach 2 importersview sourcekind library
docsdependenciesstructsconstsfunctions

about

nx_animation_timeline.nx -- keyframe animation primitive. Holds N (ts_us, value_q14) keyframes; samples a value at any timestamp via linear interpolation between adjacent keyframes. Pre-first-keyframe samples return the first value; post-last samples return the last (no extrapolation). Composes with all game-render primitives that need time-varying values. V1 ships: - struct NxKeyframe + NxTimeline - add_keyframe (must be added in ts order; substrate enforces) - sample(ts_us) returns interpolated Q14 value - loop sample (modulo at duration_us)

dependencies 2 imports · 2 importers

nx_syscalls.nx nx_tier.nx nx_animation_timeline.nx nx_animation_timeline_test.nx nx_game_runtime_compose_test.nx

imports: nx_syscalls.nxnx_tier.nx

imported by: nx_animation_timeline_test.nxnx_game_runtime_compose_test.nx

structs

25struct NxKeyframe
32struct NxTimeline

consts

18const NX_AT_OK: nx_int = 0
19const NX_AT_ERR_FULL: nx_int = 1
20const NX_AT_ERR_OUT_OF_ORDER: nx_int = 2
21const NX_AT_ERR_EMPTY: nx_int = 3
39const NX_AT_KEY_BYTES: nx_size = 16

functions

41func nx_timeline_new(capacity: nx_size) -> *NxTimeline
called by 2: mainmain calls 1: sys_mmap
51func _at_at(t: *NxTimeline, idx: nx_size) -> *NxKeyframe
60func nx_timeline_add_keyframe(t: *NxTimeline, ts_us: nx_size, value_q14: nx_int) -> nx_int
called by 2: mainmain calls 1: _at_at
79func nx_timeline_sample(t: *NxTimeline, ts_us: nx_size) -> nx_int
109func nx_timeline_sample_loop(t: *NxTimeline, now_us: nx_size, duration_us: nx_size) -> nx_int
called by 2: mainmain calls 1: nx_timeline_sample
116func nx_timeline_count(t: *NxTimeline) -> nx_size
called by 1: main
120func nx_timeline_duration_us(t: *NxTimeline) -> nx_size
called by 2: mainmain calls 1: _at_at