tawasuyu

tawasuyu/llimphi

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

Rust 660Markdown 302TOML 157RON 312382 Definiciones

⎇ main llimphi-anim/LEEME.md Markdown · 41 líneas · 1.7 KB Historia crudo

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
3*Read this in English: [README.md](README.md).*
4
5Máquina de estados de animación, estilo Rive, **clip-agnóstica**.
6
7Es el escalón sobre el playback lineal: en vez de "reproduce esta animación",
8modela "según estos *inputs*, en qué estado estoy y a cuál transiciono, con
9qué *blend*". Es lo que vuelve una animación *interactiva* (hover, progreso,
10triggers) en lugar de un loop fijo.
11
12## Por qué clip-agnóstico
13
14El núcleo **no sabe de Lottie ni de vello**. Un clip es un `ClipId` (u32)
15con una duración conocida; la máquina secuencia y mezcla clips por id y
16tiempo, y emite un `RenderFrame` que dice *qué* renderizar (clip primario +
17un clip entrante con su mezcla 0..1 durante una transición). El consumidor
18mapea `ClipId → asset` y pinta. Hoy ese consumidor es `llimphi-lottie`;
19mañana puede ser un rig de huesos nativo o un tween de `llimphi-motion` — el
20mismo motor de estados sirve a todos.
21
22## Modelo (espejo del de Rive)
23
24- **Inputs**: `bool`, `number`, `trigger` (los triggers se consumen en cada
25  `advance`).
26- **Estado**: un clip con velocidad y loop, más sus transiciones salientes.
27- **Transición**: destino + condiciones (AND) sobre inputs + duración de
28  blend. Las transiciones *any-state* se evalúan sin importar el estado
29  actual (típico para "fire trigger → ir a X desde donde sea").
30- **Condición**: `bool == v`, `number <cmp> v`, `trigger disparado`, o
31  `clip terminó` (para "cuando la animación acaba, pasa a la siguiente").
32
33## Bucle
34
35El consumidor empuja inputs (`Instance::set_bool` etc.), llama
36`Instance::advance` con el `dt` del frame, y pinta `Instance::render_frame`.
37Encaja directo en el bucle Elm de Llimphi vía `Handle::spawn_periodic`.
38
39---
40
41Parte de **llimphi** — ver [llimphi](../LEEME.md).

LEEME.md

llimphi-anim

Read this in English: README.md.

Máquina de estados de animación, estilo Rive, clip-agnóstica.

Es el escalón sobre el playback lineal: en vez de "reproduce esta animación", modela "según estos inputs, en qué estado estoy y a cuál transiciono, con qué blend". Es lo que vuelve una animación interactiva (hover, progreso, triggers) en lugar de un loop fijo.

Por qué clip-agnóstico

El núcleo no sabe de Lottie ni de vello. Un clip es un ClipId (u32) con una duración conocida; la máquina secuencia y mezcla clips por id y tiempo, y emite un RenderFrame que dice qué renderizar (clip primario + un clip entrante con su mezcla 0..1 durante una transición). El consumidor mapea ClipId → asset y pinta. Hoy ese consumidor es llimphi-lottie; mañana puede ser un rig de huesos nativo o un tween de llimphi-motion — el mismo motor de estados sirve a todos.

Modelo (espejo del de Rive)

Bucle

El consumidor empuja inputs (Instance::set_bool etc.), llama Instance::advance con el dt del frame, y pinta Instance::render_frame. Encaja directo en el bucle Elm de Llimphi vía Handle::spawn_periodic.


Parte de llimphi — ver llimphi.