Description
Editor
We have rocket support, but rocket is not necessarily made for creating a timeline. While it is possible to add rocket tracks for this, it might make more sense to separate the two systems.
- Rocket or other sync trackers are responsible for interpolating values for effects
- The timeline system is responsible for knowing what effect should be rendering at what point in time
This also means we can jump around in the timeline directly in demosys. A fairly useful feature. That alone should at least be a minimal requirement.
The idea was to render a simple overlay when pressing TAB
showing a column for each runnable effect instance. There will be vertical rows showing row numbers in the currently configured RPS. The user can toggle effects being enabled or disabled by pressing a key and we visualize the intervals with boxes.
This system should of course be entirely optional and based on the currently configured TIMELINE
in settings. We can also support having the timeline in rocket tracks by creating a track for each runnable effect instance and determine their state by looking at positive and negative values.
Timline system
- The
Timeline
class should have an internal system for keeping track of start/stop events that can also be overriden. This way people don't have to reinvent the wheel. A use case might be just having some hardcoded events toggling a small set of effects and make them cycle by doing an fmod on time. - The timeline should be based on a
deque
of events and be able to do playback and seeking backward and forward. - The timeline data should be able to be serialized and deserialized from different formats. I suggest supporting json and a simple binary format.
The user should be able to make their own timeline system as well, so we need to make sure the base class is generic.