Animation Triggers - coldrockgames/gml-raptor GitHub Wiki
Triggers are an extremely useful feature of Animation. You can specify several points during the lifetime of a running Animation to execute actions such as playing a sound or changing state (as shown in the examples on the previous page). You can even synchronize multiple concurrent running Animations on different objects through triggers by setting or changing the state of other objects (like starting the "Hit" animation on an enemy when the "Strike" animation on a sword reaches frame X where the sword touches the enemy).
This is the list of available triggers in Animation:
| Trigger | Function | Description |
|---|---|---|
| Started | add_started_trigger(func) |
Invoked on the first frame of an Animation.func receives 1 parameter: data. |
| Finished | add_finished_trigger(func) |
Invoked on the last frame of an Animation.func receives 1 parameter: data. |
| Frame | add_frame_trigger(frame,func,interval) |
Invoked on a specified frame and if you set interval to true, then every x frames (The default for interval is false).IMPORTANT: A trigger set up as interval will fire every x frames, independent of the animation length, if it is looping! Example: Your animation runs 20 frames, 3 repeats and you set an interval trigger every 8 frames. Then the trigger will fire on frames 8, 16, 24, 32,... and so on. It does not reset when a loop is finished! func receives 2 parameters: data, frame. |
| Loop | add_loop_trigger(func) |
If the Animation has more than 1 repeats set, this gets invoked every time, one loop of the Animation is finished (= the last frame has been reached).func receives 1 parameter: data. |
You know that each Saveable object and each StateMachine own a data member to store any data in the instance you like.
The same is true for the Animation. It also contains a data member, and this member will be forwarded as first parameter to each Trigger callback so you can easily share data between the triggers.
Triggers are scoped to the owner, the game object holding the Animation in the same way as the state callbacks in a StateMachine are scoped to its owner.
Next to read: Animation Chaining