API Reference
Types are in CrimsonUI unless marked (CrimsonCommon). BP = BlueprintCallable, BP (pure) = BlueprintPure, BP event = BlueprintNativeEvent / BlueprintImplementableEvent, C++ only = no Blueprint access.
Boot & policy
| Type | Kind | Description |
|---|---|---|
UCrimsonUISettings | UDeveloperSettings (Config=Game) | Project Settings -> Crimson -> Crimson UI. DefaultUIPolicyClass, ConfirmationDialogClass, ErrorDialogClass, DefaultModalContextMenuClass, DefaultWorldContextMenuClass, DefaultRadialContextMenuClass (all soft class refs, config). |
UCrimsonUIManagerSubsystem | UGameInstanceSubsystem | Boots the policy from settings at init; syncs root-layout visibility to AHUD::bShowHUD. GetRootLayout(LocalPlayer) and inherited GetCurrentUIPolicy() are C++ only. Never subclass. |
UCrimsonGameUIPolicy (CrimsonCommon) | UObject (Abstract, Blueprintable) | LayoutClass (EditAnywhere), LocalMultiplayerInteractionMode (EditAnywhere: PrimaryOnly/SingleToggle/Simultaneous). C++ hooks: OnRootLayoutAddedToViewport/Removed/Released, RequestPrimaryControl, static GetGameUIPolicy. |
UCrimsonPrimaryGameLayout (CrimsonCommon) | UCommonUserWidget | BP (protected): RegisterLayer(Tag, Container) - call in your own graph. C++ only: static GetPrimaryGameLayout(PC/LP) + GetPrimaryGameLayoutForPrimaryPlayer, PushWidgetToLayerStack<T> (sync + async-load variants), FindAndRemoveWidgetFromLayer, GetLayerWidget. |
UCrimsonUIExtensions (CrimsonCommon) | UBlueprintFunctionLibrary | BP: PushContentToLayer_ForPlayer (returns widget), PushStreamedContentToLayer_ForPlayer (soft class), PopContentFromLayer, GetLocalPlayerFromController, SuspendInputForPlayer (returns token) / ResumeInputForPlayer. BP (pure): GetOwningPlayerInputType, IsOwningPlayerUsingTouch, IsOwningPlayerUsingGamepad. |
UCrimsonGameViewportClient | UCommonGameViewportClient | Hardware vs software cursor from the Platform.Trait.Input.HardwareCursor platform trait. Set via GameViewportClientClassName. |
ACrimsonHUD | AHUD (Config=Game) | GameFramework component receiver (GameFeature anchor) + GetDebugActorList listing every ASC avatar for the GAS debugger. No UFUNCTIONs - set as HUDClass and subclass if needed. |
Activatable widgets & HUD
| Type | Kind | Description |
|---|---|---|
UCrimsonActivatableWidget | UCommonActivatableWidget (Abstract) | EditDefaultsOnly Input properties: InputConfig (ECrimsonWidgetInputMode), GameMouseCaptureMode, MenuMouseCaptureMode, bIgnoreMoveInput, bIgnoreLookInput, bForceInputModeTagsOnActivate, bRestoreInputTypeOnDeactivate. No UFUNCTIONs - behavior is automatic on activate/deactivate. |
ECrimsonWidgetInputMode | Enum (BlueprintType) | Default, GameAndMenu, Game, Menu. |
UCrimsonHUDLayout | UCrimsonActivatableWidget (Abstract) | EscapeMenuClass (soft class), EscapeInputAction (UInputAction*, 5.8 Enhanced Input path), ControllerDisconnectedScreenClass, PlatformRequiresControllerDisconnectScreen (default Platform.Trait.Input.PrimarilyController). BP event: DisplayControllerDisconnectedMenu, HideControllerDisconnectedMenu. Escape pushes to UI.Layer.Menu; tag fallback UI.Action.Escape. |
UCrimsonTaggedWidget | UCommonUserWidget (Abstract) | HiddenByTags, ShownVisibility (Visible), HiddenVisibility (Collapsed). Needs the PlayerState to implement IAbilitySystemInterface; without an ASC it stays shown. SetVisibility records intent and stays tag-gated. |
UCrimsonControllerDisconnectedScreen | UCommonActivatableWidget (Abstract) | Reconnect prompt. BindWidgets HBox_SwitchUser, Button_ChangeUser; PlatformSupportsUserChangeTags gates the user-change button. |
Dialogs & messaging
| Type | Kind | Description |
|---|---|---|
UCrimsonMessagingSubsystem | ULocalPlayerSubsystem | C++ only: ShowConfirmation(Descriptor, FCrimsonMessagingResultDelegate), ShowError(...). Pushes the settings-registered dialog class to UI.Layer.Modal. Blueprint uses the async nodes instead. |
ECrimsonMessagingResult | Enum (BlueprintType) | Confirmed, Declined, Cancelled, Killed (torn down unanswered), Unknown (hidden). |
UCrimsonGameDialogDescriptor | UObject (BlueprintType) | Header, Body, ButtonActions (BlueprintReadWrite). BP (static): CreateConfirmationOk, CreateConfirmationOkCancel, CreateConfirmationYesNo, CreateConfirmationYesNoCancel. |
FCrimsonConfirmationDialogAction | Struct (BlueprintType) | Result (which ECrimsonMessagingResult the button reports), OptionalDisplayText, ActivationDelay (seconds the button stays disabled). |
UCrimsonGameDialog | UCommonActivatableWidget (Abstract) | C++ only: SetupDialog(Descriptor, Callback), KillDialog - override for fully custom dialogs. |
UCrimsonConfirmationScreen | UCrimsonGameDialog (Abstract) | Standard implementation. Required BindWidgets: Text_Title (UCommonTextBlock), RichText_Description (UCommonRichTextBlock), EntryBox_Buttons (UDynamicEntryBox), Border_TapToCloseZone (UCommonBorder). CancelAction row handle for the gamepad Back binding. |
UCrimsonAsyncAction_ShowConfirmation | Async action | BP nodes: ShowConfirmationYesNo(Title, Message), ShowConfirmationOkCancel(Title, Message), ShowConfirmationCustom(Descriptor). One delegate OnResult(ECrimsonMessagingResult). |
UCrimsonAsyncAction_PushToLayer | Async action (cancellable) | BP node: PushContentToLayerForPlayer(OwningPlayer, SoftWidgetClass, LayerName, bSuspendInputUntilComplete=true). Delegates BeforePush(Widget) / AfterPush(Widget). |
UCrimsonAsyncAction_CreateWidgetAsync | Async action (cancellable) | BP node: CreateWidgetAsync(WorldContext, SoftClass, OwningPlayer, bSuspendInputUntilComplete=true). Delegate OnComplete(UserWidget) - widget is created, not pushed. |
Buttons, tabs, lists, drag-drop
| Type | Kind | Description |
|---|---|---|
UCrimsonButtonBase | UCommonButtonBase (Abstract) | BP: SetButtonText, StartActivationCountdown(Delay). BP event: UpdateButtonText(Text), UpdateButtonStyle(). ButtonText override property. |
UCrimsonBoundActionButton | UCommonBoundActionButton (Abstract) | Style per input method: KeyboardStyle / GamepadStyle / TouchStyle. BP: OverwriteButtonText. |
UCrimsonActionWidget | UCommonActionWidget | BP: GetIconForKey(Key) via the Enhanced Input subsystem. Shows CommonUI's built-in progress layer whenever a Progress Material Brush is authored (not just for Enhanced Input hold triggers) - drive it via OnActionProgress/OnActionComplete. |
UCrimsonTabListWidgetBase | UCommonTabListWidgetBase (Abstract) | PreregisteredTabInfoArray (EditAnywhere). BP: RegisterDynamicTab, SetTabHiddenState, IsFirstTabActive, IsLastTabActive. BP (pure): GetPreregisteredTabInfo, IsTabVisible, GetVisibleTabCount, GetTabContentForId. Delegate OnTabContentCreated(TabId, TabWidget). |
FCrimsonTabDescriptor | Struct (BlueprintType) | TabId, TabText, IconBrush, bHidden, TabButtonType, TabContentType. |
ICrimsonTabButtonInterface | UInterface (BlueprintType) | BP event: SetTabLabelInfo(TabDescriptor) - implemented by tab buttons. |
UCrimsonTabButtonBase | UCrimsonButtonBase (Abstract) | Implements ICrimsonTabButtonInterface; forward the descriptor into your visuals. |
UCrimsonListView / UCrimsonTileView | UCommonListView / UCommonTileView | FactoryRules (EditAnywhere, Instanced) select the entry widget class per item; standard list API otherwise. |
UCrimsonWidgetFactory | UObject (Abstract, Blueprintable, EditInlineNew) | BP event: FindWidgetClassForData(Data) -> widget class or null. Priority (highest evaluated first). |
UCrimsonWidgetFactory_Class | UCrimsonWidgetFactory | DataClass (soft, subclasses match) -> WidgetClass. |
UCrimsonDragDropOperation | UDragDropOperation (Blueprintable) | BP: SetPayloadObject, GetPayloadObject (pure). C++ only: GetPayload<T>(), SourceWidget weakref. |
MVVM
| Type | Kind | Description |
|---|---|---|
UCrimsonViewModelBase | UMVVMViewModelBase (Abstract, Blueprintable) | BP: Initialize(LocalPlayer). BP (pure): GetLocalPlayer. BP event: NativeOnInitialized(LocalPlayer). |
UCrimsonScreenViewModelBase | UCrimsonViewModelBase (Abstract) | Semantic base for one-per-screen VMs. No extra members. |
UCrimsonEntryViewModelBase | UCrimsonViewModelBase (Abstract) | EntryIndex (FieldNotify, BlueprintReadOnly). C++ only: SetEntryIndex / GetEntryIndex. |
Indicators
| Type | Kind | Description |
|---|---|---|
UCrimsonIndicatorManagerComponent | UControllerComponent (Blueprintable) | BP: AddIndicator, RemoveIndicator. C++ only: static GetComponent(Controller), GetIndicators(), native events OnIndicatorAdded / OnIndicatorRemoved. |
UCrimsonIndicatorLibrary | UBlueprintFunctionLibrary | BP: GetIndicatorManagerComponent(Controller). |
UCrimsonIndicatorDescriptor | UObject (BlueprintType) | One live indicator. BP setters/getters: SetDataObject, SetSceneComponent, SetComponentSocketName, SetIndicatorClass (soft UUserWidget class), SetDesiredVisibility, SetProjectionMode, SetHAlign/SetVAlign, SetClampToScreen, SetShowClampToScreenArrow, SetWorldPositionOffset, SetScreenSpaceOffset, SetBoundingBoxAnchor, SetPriority, SetAutoRemoveWhenIndicatorComponentIsNull, UnregisterIndicator. Property bParticipateInScreenStacking. |
ECrimsonActorCanvasProjectionMode | Enum (BlueprintType) | ComponentPoint, ComponentBoundingBox, ComponentScreenBoundingBox, ActorBoundingBox, ActorScreenBoundingBox. |
ICrimsonIndicatorWidgetInterface | UInterface (BlueprintType) | BP event: BindIndicator(Descriptor), UnbindIndicator(Descriptor). Header: IndicatorSystem/ICrimsonActorIndicatorWidget.h. |
UCrimsonIndicatorLayer | UWidget | The projection canvas placed in the HUD. ArrowBrush (clamp arrow). |
Context menu
| Type | Kind | Description |
|---|---|---|
UCrimsonContextMenuSubsystem | ULocalPlayerSubsystem | BP: ShowContextMenu(Request) -> widget (null while the widget class async-streams; the menu appears when loaded), CloseAll(). BP (pure): GetActiveWidget(). Widget classes fall back to UCrimsonUISettings defaults. Pushes to UI.Layer.ContextMenu. |
FCrimsonContextMenuRequest | Struct (BlueprintType) | Context (instigator + target; leave Actions empty to auto-gather from Context.Target via UCrimsonContextActionGatherer - recommended), Actions (optional explicit list), PresentationMode (Modal/World/Radial), Header, InputModeOverride, modal: bAnchorToCursor/ScreenAnchor/bCloseOnClickOutside/ModalWidgetClass (optional), world: TargetAnchor/WorldScreenOffset/WorldWidgetClass (optional), radial: RadialWidgetClass (optional). |
UCrimsonContextMenuWidgetBase | UCrimsonActivatableWidget (Abstract) | Required BindWidget: ContentPanel (top-left anchored, auto size). Entry host (one of): EntryBox (UDynamicEntryBox, preferred - C++ creates every entry, sizes to content) or EntryList (UListView, for long menus - needs a bounded height). Auto-populated on activate/refresh; missing both logs a warning (except on radial). While-open gameplay state: EffectWhileOpen (TSubclassOf<UGameplayEffect>, applied to the owning pawn's ASC on open, removed on close - e.g. grant Camera.Blocked to suppress camera-turn abilities) and LooseTagsWhileOpen (loose-tag alternative); both local to the owning client. BP: ConfirmFocusedEntry, ConfirmEntry(Index), ConfirmEntryBypassingConfirmation(Index), ConfirmEntryWithPayload(Index, Payload), RefreshEntries, RequestClose, CycleNext, CyclePrevious. BP (pure): GetViewModel, GetRequest. Gathers at activation; honors each action's ConfirmationMode and CloseBehavior; closes itself when the target dies. Default InputConfig = GameAndMenu. |
UCrimsonContextMenuWidget_Modal / _World | Widget bases (Abstract) | Modal: positions ContentPanel at the cursor / fixed anchor on the first valid-geometry tick, flips + clamps against the viewport edges, closes on the first click outside the panel (bCloseOnClickOutside on the request). World: per-tick projection via ProjectWorldLocationToWidgetPosition; closes when the anchor dies; per-asset options: AutoCloseDistance (close when the pawn walks away; 0 = never), bCloseOnClickOutside (dialog-border pattern; consumes outside clicks), bScaleWithDistance (camera-distance scale, clamped) and bFadeWhenOccluded (visibility trace camera->anchor, fades to OccludedOpacity). ContentPanel is a required base-class binding. |
UCrimsonContextMenuWidget_Radial | Widget base (Abstract) | Gamepad wheel; derives from _Modal (click-outside + clamping inherited). BP: SelectEntryByDirection(Stick) (dead-zone + angular hysteresis). BP (pure): GetEntryDirectionByIndex(Index) (entry 0 at 12 o'clock, clockwise; layout = direction * radius). SelectionDeadZone / SelectionHysteresis / MaxRadialEntries (default 8, warn above) are EditDefaultsOnly. |
UCrimsonContextMenuViewModel | UCrimsonScreenViewModelBase | FieldNotify Entries, FocusedIndex, Header. BP: SetFocusedIndex, CycleNext / CyclePrevious (wrap around, skip disabled). |
UCrimsonContextMenuEntryViewModel | UCrimsonEntryViewModelBase | FieldNotify DisplayName, Tooltip, DisabledReason, Icon, SectionTag, bIsEnabled, bIsDestructive, ConfirmationMode, bIsFocused. BP: RequestFocus, RequestConfirm (route to the owning menu). BP (pure): GetAction. |
UCrimsonContextMenuEntryWidget | UCommonButtonBase + IUserObjectListEntry (Abstract) | BP (pure): GetEntryViewModel. BP event: OnEntryViewModelSet. Hover-to-focus and click-to-confirm are wired natively. |
Touch, perf stats, loading, extension points
| Type | Kind | Description |
|---|---|---|
UCrimsonSimulatedInputWidget | UCommonUserWidget (base) | AssociatedAction (const UInputAction*), FallbackBindingKey, CommonVisibilityBorder BindWidget. BP: InputKeyValue, InputKeyValue2D, FlushSimulatedInput, GetEnhancedInputSubsystem, GetAssociatedAction, GetSimulatedKey. |
UCrimsonJoystickWidget | UCrimsonSimulatedInputWidget | StickRange (50), bNegateYAxis; BindWidgets JoystickBackground, JoystickForeground (UImage). |
UCrimsonTouchRegion | UCrimsonSimulatedInputWidget | Injects while touched. BP: ShouldSimulateInput. |
UCrimsonPerfStatWidgetBase | UCommonUserWidget (Abstract) | StatToDisplay (ECrimsonDisplayablePerformanceStat, CrimsonCommon). BP event (pure): FetchStatValue -> double (default 0.0 - you must override). BP: UpdateGraphData(ScaleFactor). BP (pure): GetStatToDisplay. Optional PerfStatGraph BindWidget + GraphLineColor/GraphBackgroundColor/GraphMaxYValue. |
UCrimsonPerfStatGraph | UUserWidget | C++ only: SetLineColor, SetMaxYValue, SetBackgroundColor, UpdateGraphData. Wraps the SCrimsonLatencyGraph Slate widget. |
UCrimsonPerfStatContainerBase | UCommonUserWidget (Abstract) | BP: UpdateVisibilityOfChildren. BP event: GetStatDisplaySetting(Stat) -> ECrimsonStatDisplayMode (default TextAndGraph). StatDisplayModeFilter property. |
ECrimsonStatDisplayMode (CrimsonCommon) | Enum (BlueprintType) | Hidden, TextOnly, GraphOnly, TextAndGraph. |
UCrimsonLoadingScreenSubsystem | UGameInstanceSubsystem | BP: SetLoadingScreenContentWidget(Class). BP (pure): GetLoadingScreenContentWidget. Delegate OnLoadingScreenWidgetChanged(NewWidgetClass). |
UCrimsonUIExtensionPointWidget | UDynamicEntryBoxBase | ExtensionPointTag, ExtensionPointTagMatch, DataClasses, bindable GetWidgetClassForData / ConfigureWidgetForData. Registry: UCrimsonUIExtensionSubsystem (CrimsonCommon), a UWorldSubsystem with BP nodes Register Extension (Widget) / (Widget For Context) / (Data) / (Data For Context), Register Extension Point, Unregister Extension, and handle Unregister / IsValid. |
Gameplay tags
| Tag | Defined in | Used for |
|---|---|---|
UI.Layer.Menu | CrimsonUI (native) | Escape-menu pushes from UCrimsonHUDLayout. |
UI.Layer.Modal | CrimsonUI (native) | Dialog pushes from UCrimsonMessagingSubsystem. |
UI.Action.Escape | CrimsonUI (native) | Legacy tag-based escape binding. |
UI.Layer.ContextMenu | CrimsonCommon (native) | Context-menu pushes. |
UI.Action.ContextMenu.Confirm / .Cancel / .Navigate.Up / .Navigate.Down / .Cycle.Next / .Cycle.Previous | CrimsonCommon (native) | Context-menu UI action bindings. |
UI.ContextMenu.Section.Primary / .Manage / .Destructive | CrimsonCommon (native) | Section grouping for UCrimsonContextAction::SectionTag; entries group by section with dividers, destructive last. |
Platform.Trait.Input.HardwareCursor | CrimsonUI (native) | Viewport client cursor decision. |
Platform.Trait.Input.PrimarilyController | CrimsonUI (native) | Default controller-disconnect-screen gate. |
Platform.Trait.Input.HasStrictControllerPairing | CrimsonUI (native) | Disconnect-screen pairing evaluation. |
UI.Layer.Game, UI.Layer.GameMenu, HUD.Slot.*, InputMode.Game, InputMode.Menu | Your project (or CrimsonCore's tag ini) | Game/GameMenu layers, extension slots, input-mode baseline tags (requested at runtime, not defined by the plugin). |
Logging
Log category: LogCrimsonUI (filter with Log LogCrimsonUI Verbose in the console).