I was originally thinking that having re-usable animations just within the one project would have been great, but having them be truly common and able to be shared would be amazing.
I haven't taken the time unfortunately to inspect how the project internals are arranged, so some if not all of this probably won't be applicable, but it might stimulate some thought at least?:
- A Timeline is an arbitrary range used to define the length of an animation.
- A Track is an array of property changes, one for each property type; x position, y position, rotation, shader property xyz plotted against a Timeline.
- An Animation is a collection of Tracks, properties of which are interpolated between when 'played'. These are stored to disk as json or other human readable file type x.anim.
- A Sequence is a collection of Animations with an optional list of conditions to play, loop or stop a given animation within the sequence. These are optionally stored to disk as json .seq files.
The animations and sequences can either be stored in a shared library location that is system-wide or project-wide, and will be automatically nested inside a folder structure which makes sense canonically.
In the user interface, a Sequence is what the user interacts with. When an Animation or Sequence is either imported or created, their usual properties are exposed in addition to new ones for retargeting/offsetting. This allows the user to specify the sprite to be used and manually align its origin to the vector path of the animation(s) it will act in. [essentially in the background gives all sprites a bone which can be bound to the vector path of an animation]
Mappings to sprites for use within animations and sequences will be retained within the project file itself.
Any animation or sequence files on disk should remain up to date. A file watcher could observe changes and warn of outdatedness / offer to update to latest versions for each given animation.
If not already the case to make projects more portable, used sprites could be imported into the project folder and linked relatively. Would be kinda cool for collaborative animation.
What do you think?