API Reference
Everything public in CrimsonActionBar, including its slot-binding surface.
UCrimsonActionBarComponent
| Member | Kind | Notes |
|---|---|---|
Find(PlayerController) | static | Controller -> PlayerState -> Pawn. |
LayoutDefinition / SetLayoutDefinition / GetLayoutDefinition | property / authority call | Replicated owner-only; swapping it rebuilds every bar. |
GetBindingStore, GetOwningPlayerController | pure | Store resolved lazily (may be null early on a client). |
GetBarTags, GetEffectivePage, GetManualPage, GetPageCount, GetSlotCount, GetLayoutIdForPage | pure | PageIndex = -1 = effective page. |
SetManualPage, CyclePage | call | Manual pages only; client forwards to server. |
GetSlotState, GetBarStates, GetBinding | pure | Snapshots exist for the effective page only. |
CanAssignBinding, IsProviderAllowed, AssignBinding, ClearSlot, MoveBinding, TryAutoPlace, ResetBar, ResetAllBars | call | Edits. All routed through the store; server-validated. |
PressSlot, ReleaseSlot | call | What a key does; what a click calls. |
BindToInputComponent, RebindInput, UnbindInput, bAutoBindInput | input | Self-owned pushed component by default. |
SetBarsLocked, AreBarsLocked, SetBarVisible | call / pure | UX lock (client-local); hidden bars skip provider queries. |
SetBindingHighlight, ClearAllHighlights | call | Proc glow; matches through the provider. |
GetKeybindTextForSlot | BlueprintNativeEvent | Override for chord / rebind-aware text. |
SaveLayoutSet, ApplyLayoutSet, DeleteLayoutSet, GetLayoutSetNames | call / pure | Store presets over every owned layout. |
GetSaveData, ApplySaveData | call | FCrimsonActionBarSaveData (manual pages). Layouts are the store's. |
RefreshAllSlots, MarkResolutionDirty | call | Force / request a re-resolve. |
Delegates
| Delegate | Payload | Fires |
|---|---|---|
OnSlotChanged | Address, State | Identity edge: bound / cleared / stale / lock / keybind / display. |
OnSlotLiveStateChanged | Address, State | Live edge: enabled, cost, cooldown start/end/restart, charges, count, active. Never per frame. |
OnSlotHighlightChanged | Address, bHighlighted | Proc glow on / off. |
OnSlotInputPressed / OnSlotInputReleased | Address | The slot's key (not a click). |
OnSlotActivationRefused | Address, State | A press on an empty / stale / disabled slot. |
OnPageChanged | BarTag, PageIndex | Effective page changed. |
OnLayoutRebuilt | - | Layout definition changed or store linked; rebuild all widgets. |
OnBarsLockedChanged | bLocked | UX lock toggled. |
Snapshots
| Type | Fields |
|---|---|
FCrimsonActionBarSlotAddress | BarTag, PageIndex (-1 = effective), SlotIndex. |
FCrimsonActionBarSlotState | Address, Binding, bBound, bStale, bLocked, bServerOnly, bHighlighted, KeybindText, Display (FCrimsonSlotBindingDisplay: DisplayName, Description, Icon, CountText), Live (FCrimsonSlotBindingLiveState: bEnabled, DisabledReason, CooldownRemaining/Duration, GlobalCooldownRemaining/Duration, bActive, Charges, MaxCharges, Count, bCostMet, FailureTags), CooldownEndWorldTime, GlobalCooldownEndWorldTime, ResolvedObject. |
FCrimsonActionBarManualPage | BarTag, PageIndex. |
FCrimsonActionBarSaveData | ManualPages. |
Layout
| Type | Fields |
|---|---|
UCrimsonActionBarLayoutDefinition | Bars, Providers (Instanced), MappingContext, MappingContextPriority, SharedSlotPlacements; FindBar, GetAllLayoutIds, GetSlotPlacements / GetMutableSlotPlacements (a bar's own list or the shared one), ResolveSlotPlacement (the effective placement of a slot index, Style blanks filled, row fallback past the end), FallbackSlotSize; editor IsDataValid. |
FCrimsonActionBarDefinition | BarTag, DisplayName, Pages, SlotInputActions, PageUpAction, PageDownAction, PressMode (ECrimsonActionBarPressMode), bForwardReleaseToProvider, StalePolicy, EditBlockedQuery, bAllowAutoPlace, AllowedProviders (empty = all; AllowsProvider), Style (FCrimsonActionBarStyle), ExtensionPointTag, ExtensionPriority, StalePolicy, EditBlockedQuery, bAllowAutoPlace, AllowedProviders (empty = all; AllowsProvider), bForwardReleaseToProvider; GetMaxSlotCount, GetPage. |
FCrimsonActionBarStyle | Per-bar build and shape - deliberately not a look: BarWidgetClass (the HUD widget the game feature action registers), SlotWidgetClass (what the bar widget spawns per slot), SlotSize (0 = widget-designed), SlotSpacing (-1 = widget-designed), Arrangement (Flow = the panel orders the slots; Freeform = every slot at its placement's position), bUseSharedPlacements (read the layout's SharedSlotPlacements instead of this bar's), SlotPlacements. Materials, colors and state looks belong to the slot widget (CrimsonCore's UCrimsonCoreActionBarSlotWidget carries SlotMaterial, MaterialBinding, Visuals). |
FCrimsonActionBarSlotPlacement | One slot position, index-aligned with SlotInputActions (so every page of the bar shares it): Position (bar-local pixels, Freeform only), Size (0 = Style.SlotSize), ZOrder (Freeform only), SlotWidgetClass (unset = the Style's). Every field is an override of the bar's Style; read them through ResolveSlotPlacement, never from the array. |
FCrimsonActionBarPageDefinition | LayoutId, DisplayName, Slots, ActivationQuery, ActivationPriority. |
FCrimsonSlotDefinition | SlotId, bLocked, bServerOnly, DefaultBinding, AcceptedEntries, EmptyLabel, EmptyIcon. |
ECrimsonActionBarArrangement | Flow (the bar widget's panel arranges slots in index order; the cheap default) or Freeform (slots sit at their placement coordinates on a Canvas Panel - diamonds, arcs, a big center slot). |
Game feature action
| Type | Fields | Notes |
|---|---|---|
UCrimsonGameFeatureAction_AddActionBars | ActionBarList[] | One entry per actor class. Applies the layout on the authority at ExtensionAdded / GameActorReady; registers widget payloads once the controller has its local player. |
FCrimsonActionBarFeatureEntry | ActorClass, LayoutDefinition, ActionBarComponentClass (opt.), SlotBindingComponentClass (opt.) | Component classes are added through UGameFrameworkComponentManager::AddComponentRequest only when set. No visual configuration lives here - widgets and placement come from the layout asset. |
UCrimsonActionBarWidgetPayload (CrimsonCore) | BarTag, WidgetClass | Moved to CrimsonCore with the UI integration. Standalone, use FCrimsonActionBarIntegrationHooks::OnBarWidgetsReady. |
Providers
| Type | Payload | Notes |
|---|---|---|
UCrimsonSlotBindingProvider_Ability | FCrimsonSlotBindingData_Ability { Identity } | RequiredAbilityTagQuery, bDisableWhenUnavailable, UnavailableReason; MakeBindingForAbility, GetIdentityForAbility, ResolveAbilitySystem. CanAutoPlaceAbility(CDO): auto-place gate - offered by the picker AND a Presentable tag identity, so transient grants never land on the bar. |
UCrimsonSlotBindingProvider_Object | FCrimsonSlotBindingData_Object { Identity } | UseEventTag, ContextActionId, AcceptedIdentityTypes, bShowCount, bDisableWhenOutOfStock, OutOfStockReason; MakeBindingForObject, GatherResolvers. |
UCrimsonSlotBindingProvider_Sequence | FCrimsonSlotBindingData_Sequence { Steps, DisplayName } | First usable step fires; MakeSequenceBinding. |
UCrimsonSlotBindingProvider | - | Base: ProviderId, DisplayName, the verbs in Concept: Providers and Identity, AcceptsPayload. |
UCrimsonSlotBindingProvider_Tag | FCrimsonBinding_Tag { Tag } | Authored tag list broadcast on MessageChannel. |
Messages and tags
| Tag | Payload | Meaning |
|---|---|---|
ActionBar.Message.SlotChanged | FCrimsonActionBarSlotChangedMessage | A slot snapshot changed (owning client). |
ActionBar.Message.PageChanged | FCrimsonActionBarPageChangedMessage | A bar's effective page changed. |
ActionBar.Message.Highlight | FCrimsonActionBarHighlightMessage | Ask bars to glow / stop glowing a binding. |
ActionBar.Provider.Ability / .Object / .Sequence | - | Default ProviderIds of the shipped providers. |
SlotBinding.Identity.Ability / .Object | - | Identity TypeTags. |
Settings
UCrimsonActionBarSettings | Default | Notes |
|---|---|---|
StatePollRateHz | 10 | Owning-client live-state poll rate. |
GlobalCooldownTags | empty | GCD tag intersection. |
HiddenFromActionBarQuery | empty | Never offered by the picker. |
DefaultEditBlockedQuery | empty | In-combat edit lock default. |
bBarsLockedByDefault | false | UX lock initial state. |
Slot-binding surface
| Type | Header | Purpose |
|---|---|---|
UCrimsonSlotBindingComponent | SlotBinding/CrimsonSlotBindingComponent.h | The store: GetLayout, GetBinding, HasLayout, SetBinding, ClearBinding, SwapBindings, ResetLayout, EnsureLayoutSize, presets, AddWriteValidator / RemoveWriteValidator / ValidateWrite, GetSaveData / ApplySaveData / RefreshReplicationState, OnLayoutChanged. |
UCrimsonSlotBindingStatics | SlotBinding/CrimsonSlotBindingStatics.h | GetEffectiveBinding, EntryPassesSlotFilter, BindingPassesSlotFilter, GatherEntriesForSlot, BuildProviderMap, FindProvider. |
FCrimsonSlotBinding, FCrimsonSlotBindingIdentity, FCrimsonSlotBindingDisplay, FCrimsonSlotBindingLiveState, FCrimsonSlotBindingContext, FCrimsonBindableEntry, ECrimsonStaleBindingPolicy, ECrimsonSlotBindingInputEvent | SlotBinding/CrimsonSlotBindingTypes.h | The vocabulary. |
ICrimsonSlotBindingPresentable, ICrimsonSlotBindingObjectResolver | SlotBinding/ICrimson...h | Bridges (see Concept: Providers and Identity). |
UCrimsonSlotBindingAbilityAdapter (subclass) | Providers/CrimsonSlotBindingAbilityAdapter.h | C++ virtuals: GetAbilityIdentity, GetAbilityDisplay, GetAbilityFilterTags, RouteSlotInput, GetChargeState, GetGlobalCooldown, CanAffordAbility. Object twin: UCrimsonSlotBindingObjectAdapter (GetUseCooldownTag, UseObject, ExecuteContextAction). Static hooks: FCrimsonActionBarIntegrationHooks. |
CrimsonCore (for orientation only)
(CrimsonCore - free to download, compiles only with all Crimson plugins installed.) UCrimsonCoreActionBarComponent (chord-aware keybind text, input re-init hook, optional bAutoPlaceGrantedAbilities), UCrimsonCoreSlotBindingComponent (store + ICrimsonSaveableSystem), both on ACrimsonPlayerController as ActionBars / SlotBindings; UCrimsonCoreSlotBindingProvider_Equipment.