Texturge Modules in Detail

The Texturge plugin consists of two modules: Texturge (Runtime) and TexturgeEditor (Editor). There is no separate Baker, Renderer, or GPU pipeline module.

Texturge Module (Runtime)

Module Overview

  • Module Class: FTexturgeModule, implements IModuleInterface
  • Loading Phase: Default (loaded at game startup)
  • Log Category: LogTexturge

Animation Blueprint System

ClassDescription
UTextAnimationBlueprintUBlueprint subclass. Properties: GlyphAnimations (TArray<UGlyphAnimation*>), Tracks (@deprecated compatibility), StageTransitionConfig, VariableNameToGuidMap, CompileCount. Methods: CreateAnimInstance(), GetTotalDuration(), GetTrackById()
UTextAnimInstanceCompiled Blueprint CDO + bake cache holder. BlueprintNativeEvent: BuildDefaultAnimation(int32 GlyphCount, const FString& Text). 4 Blueprint variable setters (float / FVector / FLinearColor / FVector2D), static BuildScheduleInfos(), GetAnimationByName(), GetCharacterCount(), EvaluateBaked(float)
UTextAnimationBlueprintGeneratedClassUBlueprintGeneratedClass subclass holding compilation output (CompiledTracks / CompiledFrameRate / CompiledTotalDuration / CompiledCharacterInterval)

Baked Data Layer

ClassDescription
FAnimationCompilerPure-function compiler (static methods). Entry point: BakeAllStages(UTextAnimationBlueprint*, const FString&, const FAnimInstanceCustomizer& = nullptr) → FBakedAnimation. Others: BuildScheduleInfos(), ExtractCurves() / ExtractCurvesRef() (zero copy), ConvertFloatChannelToRichCurve(), BakeStage(), BakeStageWithCurves(), ComputeTextFingerprint(), ComputeBlueprintFingerprint(), MinFramesBetweenRebakes = 3
FBakedAnimationNot a USTRUCT. TUniquePtr<FBakedStage> Intro/Default/Outro stages + dual fingerprints. Methods: GetStage() / HasStage() / GetFirstValidStage() / GetNextStageAfter() / GetTotalDuration()
FBakedStageUSTRUCT. StageType / GlyphCount / TotalDuration / Glyphs. Methods: IsValid() / GetStartedGlyphCount()
FBakedGlyphUSTRUCT. OriginalIndex / StartTime / Duration / bIsStatic / DefaultState / bHideFirstFrame / LayerCurves / FactoryOverride. Core method: Evaluate(StageTime, OutState)
FPerLayerCurvesUSTRUCT. 21 TArray<FRichCurveKey> + BlendMode + PlayDirection + NumberOfLoops + PlaySpeedMultiplier + LayerDuration. Methods: Evaluate() / IsEmpty() / GetEffectiveDuration()
FGlyphCurveSetNot a USTRUCT (21 FRichCurves), internal C++ temporary computation only
FGlyphCurveOverrideUSTRUCT. Ordered tweak steps for 10 properties (FGlyphFloatOverrideStep / FGlyphVec2OverrideStep / FGlyphColorOverrideStep)
FGlyphScheduleBuilderPure static scheduling utility (AddPerGlyphDelay / SkipWhitespace / SetDelayAt / SkipAt)

Layers & Factory

ClassDescription
UGlyphAnimationLayerLayer wrapper (73 Blueprint functions): deep-copied curve copy + scheduling + glyph tweaks + animation clipping. Chainable API returning itself
UGlyphAnimationFactoryMulti-layer merge baker (69 Blueprint functions): layer management + global scheduling + tweaks + Bake() three-step pipeline
UGlyphAnimationUMovieSceneSequence subclass. GetDuration() / GetTrackTypes() / HasTrackType()

Runtime Controllers

ClassDescription
UTextAnimationStageControllerStage playback engine. Playback: Play() / Pause() / Resume() / Stop() / RevealAll() / SetPlayDirection() / SetLoop() / TickAnimation() / EvaluateAllGlyphs(). Queries: IsPlaying() / IsComplete() / GetCurrentStage() / GetStageTime() / GetRevealedGlyphCount() / GetTotalGlyphCount(). Injection: Initialize() / PublishBakedAnimation(). Delegates: OnGlyphRevealed / OnStageChanged / OnAnimationComplete
UTextAnimatorRich text typewriter engine (plain C++ methods only, zero Blueprint functions). SetPlainText() / SetRichText() / SetAnimationData() / SetAnimationBlueprint() / SetPlaybackMode() / SetCPS() / SetPlayMode() / SetPlaySpeedMultiplier() / SetSequentialPlayback() / SetMaxLoopCount() / StartAnimating() / TickAnimation() / Pause() / Resume() / Stop() / SkipToEnd() / GetCurrentFrameDataArray() etc.

UMG Widgets

ClassDescription
UAnimatedTextBlockUTextBlock subclass. 12 Blueprint functions (6 playback + 6 Blueprint variables) + 2 Blueprint delegates. Properties: TextAnimationBlueprint / ParameterOverrides / bAutoPlay / bLoopPlayback
UAnimatedRichTextBlockURichTextBlock subclass. 6 playback Blueprint functions + 2 Blueprint delegates. Properties: AnimationData / bAutoPlay / bLoopPlayback / bSequentialPlayback
UEventSoundComponentUActorComponent subclass. Character sound mapping + punctuation delay + animator binding

Rich Text System

ClassDescription
UTextAnimationDataAssetUDataAsset. Entries (TArray<FAnimationEntry>)
FAnimationEntryUSTRUCT. TagName (FName) + Type (TObjectPtr<UTextAnimationBlueprint>) + 6 override maps + bHideFirstFrame
FTagParserParser. Parse(const FString&, FString& OutPlainText) → TSharedPtr<FTagNode>
FRenderTreeBuilderBuilder. Build(ParseRoot, PlainText, DataAsset) → FRenderNode, SerializeToDisplayText(), SerializeSubstring()
FRichTextMarshallerPrivate Marshaller, per-glyph rich text rendering (per-line independent ModelString since UE5.8, line terminator prefix computation)

Localization & Unicode

ClassDescription
ULocalizationSubsystemUGameInstanceSubsystem. SetLanguage() (broadcasts OnLanguageChanged), static RelocateAnchors() (exact match + LCS approximation + confidence dedup, MaxTextLength = 10000)
FSemanticAnchorUSTRUCT. AnchorId / ContextualSnippet / SourceOffset
FCharBreakIteratorIBreakIterator implementation, precomputes break point arrays (CJK / Surrogate Pair / Emoji cluster safe)
Texturge::UnicodeNamespace utilities: IsCJK() / IsCJKPunctuation() / IsHiragana() / IsKatakana() / IsHangulSyllables() / surrogate pair composition
Texturge::GlyphRenderNamespace utilities: ApplyTint() (PBM physical pigment mixing), SRGBToLinearChannel() / LinearToSRGBChannel(), BuildGlyphTransform(), IsSdfFont() etc.

Settings

ClassDescription
UTexturgeSettingsUDeveloperSettings, category "Plugins/Texturge", currently no configuration items, static Get() access only

Build.cs Dependencies

// PublicDependencyModuleNames
"Core", "CoreUObject", "Engine",
"Slate", "SlateCore", "UMG",
"MovieScene", "MovieSceneTracks",
"DeveloperSettings"

TexturgeEditor Module (Editor)

Module Overview

  • Module Class: FTexturgeEditorModule, implements IModuleInterface
  • Loading Phase: Default (editor environments only)
  • Responsibilities: registers Sequencer track editors, Details panel customization, editor commands (FTexturgeEditorCommands)
  • Log Category: LogTexturgeEditor

Blueprint Editor

ClassDescription
FTextAnimationBlueprintEditorFBlueprintEditor subclass. Designer / Graph dual modes + 7 tabs. Methods: InitTextAnimationEditor() / Compile() / GetSequencer() / ChangeViewedAnimation() / SetActivePreviewSource() / GetPreviewSourceMediator() / GetPreviewSceneConfig() / AddTrack() / RemoveTrack() etc.
FTextAnimBPDesignerMode / FTextAnimBPGraphModeFBlueprintEditorApplicationMode subclasses, register tab factories
FTextAnimationBlueprintCompilerContextFKismetCompilerContext subclass (Private/Compiler). ValidateTrackData() / FixupVariableGUIDs() / CopyAssetDataToClass()
UTextAnimationBlueprintFactoryUFactory, creates assets from the Content Browser
UAssetDefinition_TextAnimationBlueprintAsset definition (display name / color / category / open behavior)

Design Viewport & Preview

ClassDescription
STextAnimationDesignerViewMain design viewport (STextAnimationDesignSurface + FGCObject + IUMGDesigner). SetPreviewFrameDataOverride() / preview size / font metrics
FPreviewSourceMediatorPreview source arbitration (None / StagePreview / GlyphAnimation). RequestSource() / RegisterObserver() / TickPreview() / InvalidateBakeCache() / SetActiveOverrides() (4 groups)
FTexturgePreviewBakeCachePreview bake cache (dual keys: TextFingerprint + BlueprintFingerprint)
UTexturgePreviewSceneConfigPreview scene configuration (27 fields, persisted in EditorPerProjectUserSettings)
STextAnimationPreviewWidget / STextAnimationPreviewList / STextAnimationList / STextAnimationGraphPreviewPreview and list Slate widgets (Private/Designer)

Sequencer Integration

ClassDescription
UMovieSceneGlyphAnimationTrackMain Sequencer track (UMovieSceneNameableTrack, multi-line support)
UMovieSceneGlyphAnimationSectionSub-track section (FTextAnimationSubTrackData)
FGlyphAnimationTrackEditorSequencer track editor UI (FMovieSceneTrackEditor subclass, Private/TrackEditors), registered by FTexturgeEditorModule

Details Panel Customization

ClassDescription
FAnimatedTextBlockDetailsUAnimatedTextBlock details (IDetailCustomization, parameter rows + Reset)
FTextAnimationInstanceDetailsUTextAnimInstance details (IDetailCustomization, category sorting only)
FAnimationEntryDetailsFAnimationEntry details (IPropertyTypeCustomization)
UTextAnimationTrackProxyTrack property editing proxy
AnimParamTraitsHelpers.hAnimParamNeedsReset / AnimParamReset / AnimParamSync templates

Build.cs Dependencies

// PublicDependencyModuleNames
"Texturge",
"Slate", "SlateCore",
"UMGEditor",
"KismetCompiler",
"Sequencer", "SequencerCore",
"BlueprintGraph",
"PropertyEditor"
images/module-dependencies.png — Module dependency diagram: TexturgeEditor (left) depends on Texturge runtime module (right), engine module dependencies (Slate/UMG/MovieScene/KismetCompiler/Sequencer etc.) listed at the bottom of each, editor dependencies marked editor-only