171 lines
5.1 KiB
Markdown
171 lines
5.1 KiB
Markdown
---
|
|
id: formats/aeanim
|
|
parent: formats/source
|
|
icon: file.data
|
|
group: ref-formats
|
|
order: 6
|
|
title: .aeanim clips
|
|
---
|
|
# .aeanim clips
|
|
|
|
A clip is an aetext file. Every name below is checked: an unknown block, attribute or field, or an attribute written inside a block, fails the import with [ANM001](ref:ANM001) and the line to fix.
|
|
|
|
anim version=1 length=0.38 fps=12 loop=loop {
|
|
track "" prop="SpriteRenderer.size" kind=vec2 {
|
|
key t=0 v=[1, 1] interp=linear {}
|
|
key t=0.13 v=[1.3, 0.84] {}
|
|
}
|
|
frames "Slash" start=0.08 {
|
|
sprites=[asset("5a1a5c00000000000000000000000010"), asset("5a1a5c00000000000000000000000011")]
|
|
durations=[0.04, 0.04]
|
|
}
|
|
event t=0.14 name="Hit" payload=1 {}
|
|
}
|
|
|
|
## anim
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `version` | text version, 1 |
|
|
| `length` | length in seconds, required |
|
|
| `fps` | frame rate the editor uses to snap recorded keys and to show time as frames; the runtime ignores it |
|
|
| `loop` | `once`, `loop` or `pingPong` |
|
|
|
|
It holds `track`, `frames` and `event` blocks.
|
|
|
|
## track
|
|
|
|
The label is the target: `""` is the node itself, `"Sword"` or `"Arm/Hand"` a descendant.
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `prop` | `Component.field`, required |
|
|
| `kind` | `float32`, `float64`, `vec2`, `vec3`, `vec4`, `color`, `rect`, `quat`, `int32`, `int64`, `bool`, `enum` or `assetRef`, required |
|
|
| `numeric` | an `int32` or `int64` track that interpolates instead of stepping |
|
|
| `root` | the root motion track (`transform.position`, `vec2`) |
|
|
| `authority` | `presentation` (default) or `simulation` |
|
|
| `onEnd` | `hold` (default) or `restore` |
|
|
|
|
It holds `key` blocks only.
|
|
|
|
## key
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `t` | time in seconds, required |
|
|
| `v` | value of the track's kind, required |
|
|
| `interp` | `bezier`, `linear` or `step` |
|
|
| `tangent` | `auto`, `linear` or `free` |
|
|
| `in`, `out` | tangents of a `free` key |
|
|
|
|
## frames
|
|
|
|
A shorthand for a sprite track with step keys. The label is the target, as for `track`.
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `start` | time of the first frame |
|
|
| `fps` | frame rate when there are no `durations`, 12 by default |
|
|
| `prop` | sprite property, `SpriteRenderer.sprite` by default |
|
|
| `flipProp` | flip property, `SpriteRenderer.flipX` by default |
|
|
| `authority` | as for `track` |
|
|
|
|
| Field | Meaning |
|
|
|---|---|
|
|
| `sprites` | list of sprite assets, required |
|
|
| `durations` | seconds per frame, one per sprite |
|
|
| `flipX` | `true` or `false` per sprite |
|
|
|
|
## event
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `t` | time in seconds, required |
|
|
| `name` | event name, required |
|
|
| `payload` | a number or `true`/`false` |
|
|
| `mode` | `gameplay` (default), `presentation` or `preview` |
|
|
|
|
---
|
|
id: formats/aectrl
|
|
parent: formats/source
|
|
icon: anim.graph
|
|
group: ref-formats
|
|
order: 7
|
|
title: .aectrl controllers
|
|
---
|
|
# .aectrl controllers
|
|
|
|
A controller is an aetext file. Unknown blocks, attributes and fields fail the import with [ANC006](ref:ANC006); names that do not resolve give [ANC001](ref:ANC001) and [ANC002](ref:ANC002).
|
|
|
|
controller version=1 entryPos=[-176, 0] anyPos=[-176, 110] {
|
|
entry="Idle"
|
|
param "Speed" kind=float {}
|
|
param "Attack" kind=trigger {}
|
|
state "Idle" clip=asset("a0a10000000000000000000000000001") pos=[0, 0] {}
|
|
state "Run" clip=asset("a0a10000000000000000000000000002") speed=1.2 pos=[220, 0] {}
|
|
transition "Idle" to="Run" duration=0.1 {
|
|
cond "Speed" op=gt value=0.1 {}
|
|
}
|
|
transition "any" to="Hit" interrupt=true {
|
|
cond "Attack" {}
|
|
}
|
|
}
|
|
|
|
## controller
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `version` | text version, 1 |
|
|
| `ease` | easing of blends, `inOutQuad` by default |
|
|
| `entryPos` | `[x, y]` of the Entry pill in the Animator panel |
|
|
| `anyPos` | `[x, y]` of the Any State pill in the Animator panel |
|
|
|
|
| Field | Meaning |
|
|
|---|---|
|
|
| `entry` | the state the Animator starts in, the first state when left out |
|
|
|
|
It holds `param`, `state` and `transition` blocks. `pos`, `entryPos` and `anyPos` are for the editor only: the runtime ignores them, and the panel lays out what has no position.
|
|
|
|
## param
|
|
|
|
The label is the name.
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `kind` | `bool`, `int`, `float` or `trigger`, required |
|
|
| `default` | starting value; triggers have none |
|
|
|
|
## state
|
|
|
|
The label is the name; `any` is reserved.
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `clip` | the clip asset |
|
|
| `speed` | playback speed, 1 by default |
|
|
| `loop` | overrides the clip's loop mode |
|
|
| `pos` | `[x, y]` of the box in the Animator panel |
|
|
| `events` | during a blend: `dominant` (default), `both` or `incoming` |
|
|
|
|
## transition
|
|
|
|
The label is the source state, or `any`. Transitions are tried in file order.
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `to` | target state, required |
|
|
| `duration` | blend time in seconds |
|
|
| `exitTime` | passes of the state's clip that must have played; 1 is one pass |
|
|
| `interrupt` | may cut a running blend |
|
|
|
|
It holds `cond` blocks only; all must hold.
|
|
|
|
## cond
|
|
|
|
The label is the parameter.
|
|
|
|
| Attribute | Meaning |
|
|
|---|---|
|
|
| `op` | `set`, `eq`, `ne`, `gt`, `ge`, `lt` or `le`; triggers use `set` |
|
|
| `value` | a number or `true`/`false`; required except for `set` |
|