API Reference

Everything public in CrimsonActionBar, including its slot-binding surface.

UCrimsonActionBarComponent

MemberKindNotes
Find(PlayerController)staticController -> PlayerState -> Pawn.
LayoutDefinition / SetLayoutDefinition / GetLayoutDefinitionproperty / authority callReplicated owner-only; swapping it rebuilds every bar.
GetBindingStore, GetOwningPlayerControllerpureStore resolved lazily (may be null early on a client).
GetBarTags, GetEffectivePage, GetManualPage, GetPageCount, GetSlotCount, GetLayoutIdForPagepurePageIndex = -1 = effective page.
SetManualPage, CyclePagecallManual pages only; client forwards to server.
GetSlotState, GetBarStates, GetBindingpureSnapshots exist for the effective page only.
CanAssignBinding, IsProviderAllowed, AssignBinding, ClearSlot, MoveBinding, TryAutoPlace, ResetBar, ResetAllBarscallEdits. All routed through the store; server-validated.
PressSlot, ReleaseSlotcallWhat a key does; what a click calls.
BindToInputComponent, RebindInput, UnbindInput, bAutoBindInputinputSelf-owned pushed component by default.
SetBarsLocked, AreBarsLocked, SetBarVisiblecall / pureUX lock (client-local); hidden bars skip provider queries.
SetBindingHighlight, ClearAllHighlightscallProc glow; matches through the provider.
GetKeybindTextForSlotBlueprintNativeEventOverride for chord / rebind-aware text.
SaveLayoutSet, ApplyLayoutSet, DeleteLayoutSet, GetLayoutSetNamescall / pureStore presets over every owned layout.
GetSaveData, ApplySaveDatacallFCrimsonActionBarSaveData (manual pages). Layouts are the store's.
RefreshAllSlots, MarkResolutionDirtycallForce / request a re-resolve.

Delegates

DelegatePayloadFires
OnSlotChangedAddress, StateIdentity edge: bound / cleared / stale / lock / keybind / display.
OnSlotLiveStateChangedAddress, StateLive edge: enabled, cost, cooldown start/end/restart, charges, count, active. Never per frame.
OnSlotHighlightChangedAddress, bHighlightedProc glow on / off.
OnSlotInputPressed / OnSlotInputReleasedAddressThe slot's key (not a click).
OnSlotActivationRefusedAddress, StateA press on an empty / stale / disabled slot.
OnPageChangedBarTag, PageIndexEffective page changed.
OnLayoutRebuilt-Layout definition changed or store linked; rebuild all widgets.
OnBarsLockedChangedbLockedUX lock toggled.

Snapshots

TypeFields
FCrimsonActionBarSlotAddressBarTag, PageIndex (-1 = effective), SlotIndex.
FCrimsonActionBarSlotStateAddress, 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.
FCrimsonActionBarManualPageBarTag, PageIndex.
FCrimsonActionBarSaveDataManualPages.

Layout

TypeFields
UCrimsonActionBarLayoutDefinitionBars, 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.
FCrimsonActionBarDefinitionBarTag, 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.
FCrimsonActionBarStylePer-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).
FCrimsonActionBarSlotPlacementOne 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.
FCrimsonActionBarPageDefinitionLayoutId, DisplayName, Slots, ActivationQuery, ActivationPriority.
FCrimsonSlotDefinitionSlotId, bLocked, bServerOnly, DefaultBinding, AcceptedEntries, EmptyLabel, EmptyIcon.
ECrimsonActionBarArrangementFlow (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

TypeFieldsNotes
UCrimsonGameFeatureAction_AddActionBarsActionBarList[]One entry per actor class. Applies the layout on the authority at ExtensionAdded / GameActorReady; registers widget payloads once the controller has its local player.
FCrimsonActionBarFeatureEntryActorClass, 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, WidgetClassMoved to CrimsonCore with the UI integration. Standalone, use FCrimsonActionBarIntegrationHooks::OnBarWidgetsReady.

Providers

TypePayloadNotes
UCrimsonSlotBindingProvider_AbilityFCrimsonSlotBindingData_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_ObjectFCrimsonSlotBindingData_Object { Identity }UseEventTag, ContextActionId, AcceptedIdentityTypes, bShowCount, bDisableWhenOutOfStock, OutOfStockReason; MakeBindingForObject, GatherResolvers.
UCrimsonSlotBindingProvider_SequenceFCrimsonSlotBindingData_Sequence { Steps, DisplayName }First usable step fires; MakeSequenceBinding.
UCrimsonSlotBindingProvider-Base: ProviderId, DisplayName, the verbs in Concept: Providers and Identity, AcceptsPayload.
UCrimsonSlotBindingProvider_TagFCrimsonBinding_Tag { Tag }Authored tag list broadcast on MessageChannel.

Messages and tags

TagPayloadMeaning
ActionBar.Message.SlotChangedFCrimsonActionBarSlotChangedMessageA slot snapshot changed (owning client).
ActionBar.Message.PageChangedFCrimsonActionBarPageChangedMessageA bar's effective page changed.
ActionBar.Message.HighlightFCrimsonActionBarHighlightMessageAsk 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

UCrimsonActionBarSettingsDefaultNotes
StatePollRateHz10Owning-client live-state poll rate.
GlobalCooldownTagsemptyGCD tag intersection.
HiddenFromActionBarQueryemptyNever offered by the picker.
DefaultEditBlockedQueryemptyIn-combat edit lock default.
bBarsLockedByDefaultfalseUX lock initial state.

Slot-binding surface

TypeHeaderPurpose
UCrimsonSlotBindingComponentSlotBinding/CrimsonSlotBindingComponent.hThe store: GetLayout, GetBinding, HasLayout, SetBinding, ClearBinding, SwapBindings, ResetLayout, EnsureLayoutSize, presets, AddWriteValidator / RemoveWriteValidator / ValidateWrite, GetSaveData / ApplySaveData / RefreshReplicationState, OnLayoutChanged.
UCrimsonSlotBindingStaticsSlotBinding/CrimsonSlotBindingStatics.hGetEffectiveBinding, EntryPassesSlotFilter, BindingPassesSlotFilter, GatherEntriesForSlot, BuildProviderMap, FindProvider.
FCrimsonSlotBinding, FCrimsonSlotBindingIdentity, FCrimsonSlotBindingDisplay, FCrimsonSlotBindingLiveState, FCrimsonSlotBindingContext, FCrimsonBindableEntry, ECrimsonStaleBindingPolicy, ECrimsonSlotBindingInputEventSlotBinding/CrimsonSlotBindingTypes.hThe vocabulary.
ICrimsonSlotBindingPresentable, ICrimsonSlotBindingObjectResolverSlotBinding/ICrimson...hBridges (see Concept: Providers and Identity).
UCrimsonSlotBindingAbilityAdapter (subclass)Providers/CrimsonSlotBindingAbilityAdapter.hC++ 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.