@huukhanhnguyen/model / lanes/animations/nodes
lanes/animations/nodes
animationNodeOf()
animationNodeOf(
model,key):ChainNode<Chain, {clip:AnimationClip;tracks:Track[]; }>
Parameters
model
key
string
Returns
ChainNode<Chain, { clip: AnimationClip; tracks: Track[]; }>
componentAnimationsNodeOf()
componentAnimationsNodeOf(
model,componentKey):ChainNode<Component, {clips:AnimationClip[];tracks:Track[]; }>
Grain is the COMPONENT: an isolated scope's parameter nodes die with the call, so the node diffs the whole component JSON instead.
Parameters
model
componentKey
string
Returns
ChainNode<Component, { clips: AnimationClip[]; tracks: Track[]; }>
evaluateAnimations()
evaluateAnimations(
model):Resolved<{clips:AnimationClip[];tracks:Track[]; }>
All model-level animations[] resolved to AnimationClip + the flat track pool every clip/joint/parameter reference resolves against (2026-08-14: a Track carries no target of its own — see evaluateAnimationChain's own header).
Parameters
model
Returns
Resolved<{ clips: AnimationClip[]; tracks: Track[]; }>
evaluateComponentAnimations()
evaluateComponentAnimations(
model,componentKey,args?): {clips:AnimationClip[];tracks:Track[]; }
Animations on one components[] entry (isolated param scope) — the clip/track split evaluateAnimations already returns for the model lane.
Parameters
model
componentKey
string
args?
Record<string, string>
Returns
{ clips: AnimationClip[]; tracks: Track[]; }
clips
clips:
AnimationClip[]
tracks
tracks:
Track[]