I feel like there's an important feature lacking from the current constraints that would have tons of use cases, which boils down to scrubbing a timeline by a bone's position, rotation, or scale. With the introduction of physics this seems particularly powerful for auto-keying certain effects when specific conditions are met, but it's also very useful for a few other common use cases:
- Spritesheets of rotated body pieces (hand, foot, torso, etc) that automatically swap out in a character turnaround. You'd just make a timeline of the image sequence frames, then constrain its playback position 0%-100% to a bone's rotation 0-360, with wraparound. This would link skeleton and image art in a very intuitive way on the more complex rigs that many people use for their characters, since hands and feet often aren't facing exactly the same direction as the torso in expressive and dynamic animations. You could even key automatic draw order changes for overlapping pieces!
- Time-based animation effects. Animate a normal attack, then create a second timeline with a scrubber bone that goes from X=0 to X=500, linking that range to the playback position. You could punch a "time stone", break it, then play the attack in reverse, or glitch between different points in the sub-timeline, or play at 50% on contact and then continue at 100% afterward for a bigger impact. Any timeline playback could be directly keyed via the bone's position.
- Physics-based animation effects. Maybe you want a character's hair to shine when physics pulls it back to a specific angle (reflecting sunlight)? Basically any number in the program could become an equation with defined effects. You could even trigger sub-animations when bones hit certain values, and for unpredictable physics values this would be extremely valuable.
A lot of this is currently possible in-engine via the API, but that does not make it animatable within Spine, with that kind of instant visual feedback. My idea would be to add a scrubbing constraint with these params: constrained animation, linked bone, value type dropdown (pos rot scale skew X Y), 0% playback value equivalent, 100% playback value equivalent, and a wraparound/clamp toggle box for bone values outside of that range.
Possibly also have animations that trigger when you go below the minimum value or above the maximum value (on crossing that threshold for the first time in that direction, so wraparound still works), because then you basically have bone events. This seems complicated and only marginally more useful, though.