Fighting Game · Guides & deep dives

Sequencer Timeline Editor UI

surface and requires a horizontal timeline, frame ruler, keyframe lanes, track headers, playhead, zoom, and horizontal scroll support.

4sections2 minread

On this page

Task: TODOS.phase-72.72.15.2.1

The sequencer timeline editor UI is represented by a V2Editor TimelineVisualizer widget spec and a deterministic layout model. The model is built from FV2SequencerSequenceSpec so editor widgets can render the same horizontal timeline, playhead, zoom, scroll, and track headers that automation validates.

Runtime API#

  • Widget spec: FV2SequencerTimelineEditorWidgetSpec
  • Viewport spec: FV2SequencerTimelineEditorViewportSpec
  • Track header: FV2SequencerTimelineTrackHeaderSpec
  • Row model: FV2SequencerTimelineTrackRowModel
  • Layout model: FV2SequencerTimelineEditorModel
  • Issue enum: EV2SequencerTimelineEditorIssueType

BuildSequencerTimelineEditorWidgetSpec targets the TimelineVisualizer surface and requires a horizontal timeline, frame ruler, keyframe lanes, track headers, playhead, zoom, and horizontal scroll support. BuildSequencerTimelineEditorViewportSpec captures the current frame, zoom in pixels per frame, scroll frame offset, visible frame count, header width, row height, and timeline width.

Layout Behavior#

BuildSequencerTimelineEditorModel converts sequence tracks into stable track headers and rows. It computes:

  • visible frame window from ScrollFrameOffset and VisibleFrameCount;
  • PlayheadX from HeaderWidth + (CurrentFrame - VisibleStartFrame) * Zoom;
  • bPlayheadVisible for scroll windows that include the current frame;
  • track header labels, row index, binding id, muted/locked state, and color tokens;
  • visible keyframe frames for property, camera, event, audio, animation, and rail/cut rows.

The default fixture uses Seq.DataModel.CouncilIntro at frame 60, zoom 4, visible frames 0-120, and playhead X 460.

QA Inventory#

  • Horizontal timeline: widget spec and model require bHorizontalTimeline.
  • Playhead: default model computes a visible playhead at 460.
  • Zoom: changing zoom from 4 to 8 changes playhead X from 460 to 700.
  • Scroll: visible frame window 90-150 keeps frame 150 visible.
  • Track headers: three headers are generated for the default sequencer data model.
  • Off-path: empty tracks report missing headers, invalid zoom reports InvalidZoom, and scrolling away from the playhead stays valid while marking bPlayheadVisible=false.

js_repl Playwright interaction was unavailable in this session and the affected surface is Unreal editor data rather than browser-rendered UI, so verification is through UE editor automation and contract gates.

Verification#

  • python3 V2/ue/Tools/check-v2-sequencer-timeline-editor.py
  • V2.Editor.Sequencer.TimelineEditor
  • python3 V2/ue/Tools/check-v2-editor-module.py
  • python3 V2/ue/Tools/check-v2-ci-workflow.py