Skip to content

Simple timeline editor and system #51

Open
@einarf

Description

@einarf

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions