tawasuyu

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 660Markdown 302TOML 157RON 312382 Definitions

⎇ main llimphi-anim/README.md Markdown · 30 lines · 1.2 KB History raw

chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes 93253cc22 · Sergio ·

1# llimphi-anim
2
3A Rive-style, **clip-agnostic** animation state machine.
4
5It is the step above linear playback: instead of "play this animation", it models
6"given these *inputs*, which state am I in and which do I transition to, with what
7*blend*". That is what turns an animation *interactive* (hover, progress,
8triggers) rather than a fixed loop.
9
10## Why clip-agnostic
11
12The core **knows nothing about Lottie or vello**. A clip is a `ClipId` (u32) with
13a known duration; the machine sequences and blends clips by id and time, and
14emits a `RenderFrame` saying *what* to render (the primary clip plus an incoming
15clip with its 0..1 blend during a transition). The consumer maps
16`ClipId → asset` and paints. Today that consumer is `llimphi-lottie`; tomorrow it
17could be a native bone rig or a `llimphi-motion` tween — the same state engine
18serves them all.
19
20## Model (mirroring Rive's)
21
22- **Inputs**: `bool`, `number`, `trigger` (triggers are consumed on each
23  `advance`).
24- **State**: a clip with speed and looping, plus its outgoing transitions.
25- **Transition**: a target + (AND-ed) conditions over inputs + a blend duration.
26  *Any-state* transitions are evaluated regardless of the current state.
27
28---
29
30Part of **llimphi** — see [llimphi](../README.md).

README.md

llimphi-anim

A Rive-style, clip-agnostic animation state machine.

It is the step above linear playback: instead of "play this animation", it models "given these inputs, which state am I in and which do I transition to, with what blend". That is what turns an animation interactive (hover, progress, triggers) rather than a fixed loop.

Why clip-agnostic

The core knows nothing about Lottie or vello. A clip is a ClipId (u32) with a known duration; the machine sequences and blends clips by id and time, and emits a RenderFrame saying what to render (the primary clip plus an incoming clip with its 0..1 blend during a transition). The consumer maps ClipId → asset and paints. Today that consumer is llimphi-lottie; tomorrow it could be a native bone rig or a llimphi-motion tween — the same state engine serves them all.

Model (mirroring Rive's)


Part of llimphi — see llimphi.