Sequencer Integration
Texturge deeply integrates with UE5’s Sequencer framework, enabling the use of MovieScene timelines and FloatChannel keyframe curves to edit text animations, synchronized with cutscenes in Level Sequencer.
Architecture
UTextAnimation
UMovieSceneSequence
└── UTextAnimation ← Texturge text animation sequence
├── MovieScene ← Standard UMovieScene (contains tracks)
└── DisplayLabel ← Editor display name
UTextAnimation is a subclass of UMovieSceneSequence, analogous to UWidgetAnimation. It contains a UMovieScene instance and supports keyframe editing through the Sequencer editor.
Key features:
- Thread-safe post-load (
IsPostLoadThreadSafe() = true) - No possessable object bindings (pure property animation)
IsTrackSupportedImpl()filters to only support Texturge custom tracks
MovieScene Tracks
MovieSceneTextAnimationTrack ← Sequencer master track
└── MovieSceneTextAnimationSection ← Track section
└── FloatChannel[] ← FloatChannel per property track
MovieSceneTextAnimationTrack and MovieSceneTextAnimationSection map the 10 track types’ FloatChannel data back into FTextAnimationTrack structures for extraction by UTextAnimInstance::BuildTracksFromTextAnimation().
Sequencer Editing Workflow
In the Animation Blueprint Editor
- Open a
UTextAnimationBlueprintasset → the Texturge Animation Blueprint Editor launches automatically - Create a
UTextAnimationsequence in the Sequencer panel - Add track types via the “Add Track” button (10 types: Opacity, Translation, Scale, etc.)
- Add and edit keyframes on FloatChannel curves
- Drag the playhead to preview animation effects in real-time in the designer viewport
Editor Preview Mechanism
When Sequencer time changes, the editor drives the designer preview through the following flow:
Sequencer::OnGlobalTimeChanged()
│
▼
FTextAnimationBlueprintEditor::OnSequencerGlobalTimeChanged()
│
▼
UTextAnimInstance::EvaluateTime(ScrubPosition)
│
▼
TArray<FAnimationFrameData> FrameData
│
▼
STextAnimationDesignerView::SetPreviewFrameDataOverride(FrameData)
│
▼
UTextAnimator::SetPreviewFrameDataOverride(FrameData)
│
▼
SAnimatedTextBlock::OnPaint() queries HasPreviewFrameData() → uses injected frame data
The bUpdatingPreview re-entrancy guard prevents OnSequencerGlobalTimeChanged from being called recursively.
Using in Level Sequencer
Texturge’s TrackEditor (FTextAnimationTrackEditor) can add text animation tracks to Level Sequencer, enabling synchronized playback of text animations with level cutscenes.
CineCamera Sync Example
LevelSequencer
├── CineCameraActor Track
│ └── Transform Section ← Camera movement
├── TextAnimation Track
│ └── TextAnimation Section ← Text animation (synced with camera)
│ ├── Opacity Channel ← Fade-in curve
│ └── Translation Channel ← Bounce-in curve