# AnimEvent

> Talos next · Since 0.6; changed in 0.7

## Fields

| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| `clip` | `string` | yes |  |  |  |
| `at` | `number` | no |  |  | Where in the clip, as a fraction of its duration in 0..1. A fraction and not a time in seconds, so retiming the clip or playing it at another speed moves the event with it. Exactly one of `at` and `frame` (`animator-event-invalid`). |
| `frame` | `number` | no |  |  | The same position as a frame number on the engine's 30 Hz clip grid (frame 0 is the clip's first pose), for authoring against the frame counter of a DCC tool. Resolved to a fraction of the clip when the animator is built; a frame past the clip's last one is refused then. A whole number, at least 0. Exactly one of `at` and `frame`. |
| `until` | `number` | no |  |  | Makes the event a window: open while the clip is the animator's event source and its playhead is in `[at, until)`, reported as `phase: "begin"` and `phase: "end"` events. Same units as `at`, and above it, at most 1 (`animator-event-window-invalid`). |
| `untilFrame` | `number` | no |  |  | `until` as a frame number, for an event placed with `frame`. |
| `event` | `string` | yes |  |  | The event name behaviors subscribe to. |
| `data` | `object` | no |  |  | Free-form values delivered as `data.data` of the event. At most 16 keys and 1024 bytes of JSON (`animator-event-data-invalid`). |
