Starting to work on an animation timeline for Lumenarium. You can see a rudimentary timeline with animation clips at the bottom, and watch the pattern change over time.

The way I'm thinking about doing this is to split functionality into layers:

  1. Base Layer: units of functionality written in code, compiled into the program
  2. Patters Constructed From Nodes: Lumenarium users can compose the Base Layer units into patterns. Each pattern is its own node graph. These can be evaluated at runtime (what I have now) and compiled for speed (not sure how to do this yet but it doesn't seem necessary to evaluate the node graph when you don't care about editing it. This seems like a cool metaprogramming opportunity too!)
  3. Timeline: users arrange patterns on a timeline, and in layers allowing for more manual control over the output. Any inputs to patterns (specified by nodes in the pattern's node graph) would be editable from the animation interface.

At the moment, layer 1 is 85% done pending any changes made necessary by the animation layer, layer 2, not counting compiling the node graph, is 50% done (need to separate functionality and rendering), and I'm just starting layer 3 though that is looking like it will be relatively simple.