004 Mint's Sequencer

Goals

Execution

Using Spatial variables to sample Keyframes along a Track.

Moving Keyframes and Snapping using Sliders on the Keyframe Itself.

Sequencable Elements

This is anything that can be changed by the readhead reading the contents of a Keyframe:

Structure

Manager

Holds:

Timelines

Holds:

Seq Manager

Holds:

  • General / shared Flux
    • Type and name handler
  • Templates
  • Settings
  • Assets
  • Dynamic Edit Ui - Templates

Instance count:
One or Two per Session. Less is better to minimize Duplikate Logic, assets and such.

Notes:

Timeline

Holds:
Tracks
Playback head

Instance count:
Usually one for each "Project". For example one for the environment Animations, one for Gameplay and one for effects.

Notes:

Track

Holds:
Keyframes

Instance count:
One for each unique Sequencable Element Type

Notes:
Each Track contains some basic information about itself:

  • What Sequencable Element it is meant to Sequence
    • Value
      • What Type
      • Default value
      • Hold value or fallback to default
    • Reference
      • Ref type
      • Hold value or fallback to default
    • Other Tracks
      • Reference to that Track
      • Sequencing mode
    • Trigger
    • Drive Progress
Keyframe

Holds:

  • The Sequencable Elements / The actual Data.
  • The length (not for Impulses)
  • Position

Instance count:
As many as you need to represent your animation.
Keyframes are the Lightest part of the system so it should be able to handle loads of them

Notes:
The data is stored on the keyframes as Dynamic Variables for easy editing through parenting the editing ui under a keyframe

Editing UI

Consists of some basic elements that are always present

Depending on the Sequencable Element that is defined under the current Track the Dynamic Edit Ui gets switched out to a fitting template that is stored in the manager

Dynamic Edit Ui - presets

These need to be tailor made for almost any data type. Some data types might be able to share Presets like many reference types maybe float, float2, float3, float4 by having some logic on the templates themselves.

Ideas

  1. Read the Position of the Readhead on a Keyframe and use that to make custom interpolation
    • Calculate Absolute start and end position of keyframe (in relation to It's timeline) and remap those to be 0 to 1. Then remap the Readhead position to use as the "Keyframe progress". Use the resulting value to drive the value in the Spatial Value Source

KF needs UUID for regenerating the visuals

Fix weird float inputs on edit ui?:
you could try "FloatTextEditorParser" instead of primitive member editor. It might work better but not sure