Animations: easing per key (#101)

admin committed 2026-09-17 07:27:45 +02:00
1 parent 5113c10be7
commit cd5d761d81
2 files changed
+12 -3

No files matched your search

+11 -2
@@ -26,11 +26,20 @@ choice holds until the next key (that is how a picture sequence works: a `textur
frame by frame). Before the first key a row holds its first value, after the last one its last. A
row may be **relative**: its numbers are added to what the target held when the animation
started, so one walk cycle can bob every enemy where it stands. Rotation blends like any number —
from 350 to 10 goes backwards over 340°, a full turn is 0 → 360. Every key has an
`interpolation` field that may be absent and then means linear; easing lands there later. A row
from 350 to 10 goes backwards over 340°, a full turn is 0 → 360. A row
whose object is gone stays, labelled *(missing)*, and is skipped when playing. The same object
and property cannot be keyed twice on one animation.
**Easing.** Every key of a number or colour row has an **Easing** for the way from it to the next
key: *Linear* (the default, stored as no field at all), *Step* (holds until the next key, like a
texture does), *Ease in* (starts slow: at half the time a quarter of the way), *Ease out* (starts
fast: three quarters) and *Ease in-out* (slow at both ends, halfway at half the time). The curves
are quadratic. Set it in the inspector for all picked keys at once; keys of a row that cannot blend
are left alone. A new value or a move keeps a key's easing. The timeline draws it into the key: the
right half is the start of the way, the left half its end, a round half a slow one — a diamond is
linear, a circle ease in-out, a half-round key ease in or ease out, a square a step. Player and
preview evaluate it in one place, so both show the same curve.
**The Animation tab.** The header picks the animation, what it **animates** (the root), **+ Row**
(a dialog: the root or one of its objects, then a property of that; the inspector's
*Change target…* reopens it to move a row's keys to another property of the same kind), **Play**
+1 -1
@@ -43,7 +43,7 @@ into issues #1-#50, closed ones included, each carrying the commits it was filed
Several scenes in one run (a `Load scene` node — screens are containers
today), auth, touch-optimised layout, graph comments/groups. Sound has no mixer, no fade and no
`Set volume` on a playing voice (see [Sounds](Sounds)). A frame is always stretched to
the sprite's `width` x `height`: no nine-slice. Animations have no easing, no events on the
the sprite's `width` x `height`: no nine-slice. Animations have no events on the
timeline and no preview in the Scene tab. Slicing cuts a regular grid only — no detection of where the sprites actually
sit on the sheet. Unreferenced image files are never collected — deliberately, since the image
picker offers them again; nothing deletes a stored image except `DELETE ?r=textures/{file}`.