Runtime Module Overview
The runtime module (Texturge) is the plugin’s core subsystem, responsible for compile-time baking, runtime evaluation, and UMG rendering. It compiles animations defined by designers in Blueprints (UTextAnimationBlueprint) into FBakedAnimation baked data, which UTextAnimationStageController evaluates per frame into FGlyphAnimationState, finally drawn to the screen by widgets.
Core Concepts
| Concept | Description |
|---|---|
UTextAnimationBlueprint | animation Blueprint asset (UBlueprint subclass), holding the GlyphAnimations list, StageTransitionConfig, and Blueprint variables |
UGlyphAnimation | glyph animation sequence asset (UMovieSceneSequence subclass) storing 21 channels of keyframe curves |
UTextAnimInstance | Blueprint-generated instance holding the bake cache, exposing the BuildDefaultAnimation Blueprint event |
FAnimationCompiler | pure-function compiler compiling Blueprint + text into FBakedAnimation |
FBakedAnimation | complete bake result containing Intro / Default / Outro FBakedStage stages and dual fingerprints |
FBakedStage / FBakedGlyph | single-stage / single-glyph baked data; FBakedGlyph contains multi-layer FPerLayerCurves |
UTextAnimationStageController | runtime stage controller driving playback, pause, stage transitions, and evaluation of baked data |
UTextAnimator | typewriter pipeline engine driving UAnimatedRichTextBlock (rich text multi-entry path) |
FGlyphAnimationState | single-glyph render state (position/scale/rotation/tint/shadow — 10 fields) |
UAnimatedTextBlock / UAnimatedRichTextBlock | two UMG widgets, going through the controller and animator paths respectively |
NOTE
Two runtime paths: the plain text path (
UAnimatedTextBlock→UTextAnimationStageController→FBakedAnimation) and the rich text path (UAnimatedRichTextBlock→UTextAnimator→ render tree + multi-entry baking). The plain text path uses the bake pipeline; the rich text path orchestrates multi-entry playback through the animator at runtime.
Initialization Flow
Manual C++ Driving
// 1. Compile: Blueprint + text → baked animation
FBakedAnimation Baked = FAnimationCompiler::BakeAllStages(AnimationBlueprint, MyDisplayText);
// 2. Create a stage controller and inject the baked data
UTextAnimationStageController* Controller = NewObject<UTextAnimationStageController>(this);
Controller->Initialize(&Baked, AnimationBlueprint);
// 3. Advance per frame (usually driven by widget OnPaint)
Controller->TickAnimation(DeltaTime);
Automatic Widget Flow
UAnimatedTextBlock encapsulates the full flow internally: after setting the TextAnimationBlueprint and ParameterOverrides properties, the widget automatically triggers compilation, creates the controller, and binds delegates in SynchronizeProperties(). Call Play() at runtime to play.
UAnimatedTextBlock property | Type | Description |
|---|---|---|
TextAnimationBlueprint | UTextAnimationBlueprint* | the Blueprint asset driving the animation (single animation only; no RichText tag parsing) |
ParameterOverrides | UAnimParameterOverrides* | instance-level parameter override container (Instanced) |
bAutoPlay | bool | auto-play after initialization |
bLoopPlayback | bool | loop playback |
Playback Control
Both the controller and the widgets provide a unified playback lifecycle:
| Method | Description |
|---|---|
Play() | starts playing the animation |
Pause() | pauses time advancement, keeping the current state |
Resume() | resumes playback from the paused point |
Stop() | stops and resets |
SkipToEnd() | immediately displays all glyphs (widget level) |
RevealAll() | immediately reveals all glyphs (controller level) |
UTextAnimationStageController::TickAnimation(float DeltaTime) is driven by the host widget each frame, advancing the stage clock and calling EvaluateAllGlyphs.
Stage System
Animation stages are defined by the EAnimationStage enum (Intro / Default / Outro). The controller maintains CurrentStage and StageTime, advances the clock, and broadcasts OnAnimationComplete when playback finishes.
Cross Fade
UTextAnimationBlueprint::StageTransitionConfig (FStageTransitionConfig) defines stage transition parameters: IntroToDefaultCrossFade, DefaultToOutroCrossFade (default 0.1s), and EasingFunc, participating in the Blueprint fingerprint hash.
Widget Binding
| Widget | Base class | Internal driver | Text type |
|---|---|---|---|
UAnimatedTextBlock | UTextBlock | UTextAnimationStageController | plain text |
UAnimatedRichTextBlock | URichTextBlock | UTextAnimator | rich text (tag → animation entry mapping) |
Both widgets drive the animation Tick per frame through Slate OnPaint.
TIP
Animation ticking is driven by
OnPaint, not an independent Tick function. If the widget is not visible (not painted), the animation does not advance. For background animations, driveTickAnimationmanually.
Parameter Overrides
UAnimParameterOverrides provides 6 override maps (FloatOverrides / IntOverrides / BoolOverrides / VectorOverrides / ColorOverrides / Vector2DOverrides) keyed by Blueprint variable name. The widget’s ParameterOverrides property is an Instanced object held independently by each widget instance; at bake time FAnimInstanceCustomizer writes them into the bake temporary instance, and the Blueprint CDO is never modified.