CrimsonActionBar
UAbilitySystemComponent. Bars, pages, the store, the item/object provider and the sequence provider work without GAS; ability slots do not.MMO-grade action bars: keybound, paged, context-driven bars over the plugin's own slot binding store. Layouts are server-authoritative and replicated owner-only; every slot exposes a UI-agnostic state snapshot (icon, name, keybind, cooldown, global cooldown, charges, count, cost, active, stale, highlight) that any widget binds to. Slot content is polymorphic through providers - the plugin ships generic providers for gameplay abilities, container-owned objects (inventory items, gear, mounts) and first-usable macro sequences, and you add your own by subclassing one class.
UCrimsonActionBarComponent's delegates (How-To: Bind a Slot Widget). CrimsonCore (free to download, compiles only with all Crimson plugins installed) shows a complete HUD built on it.What's included
| System | Key types | Purpose |
|---|---|---|
| Bars | UCrimsonActionBarComponent | Pages, input, per-slot snapshots, edit validation, layout sets, save data. One per player, on the PlayerController. |
| Layout | UCrimsonActionBarLayoutDefinition, FCrimsonActionBarDefinition, FCrimsonActionBarPageDefinition | Data asset: bars -> pages -> slots, slot input actions, providers, optional mapping context. |
| Snapshots | FCrimsonActionBarSlotState, FCrimsonActionBarSlotAddress | What a slot widget reads. Static half (FCrimsonSlotBindingDisplay) + live half (FCrimsonSlotBindingLiveState). |
| Providers | UCrimsonSlotBindingProvider_Ability, _Object, _Sequence | Granted abilities; container-owned things by identity; first-usable macros. |
| Messages | FCrimsonActionBarSlotChangedMessage, ...PageChangedMessage, ...HighlightMessage | Component delegates OnSlotChangedMessage / OnPageChangedMessage (plus ...Native twins carrying the ActionBar.Message.* channel) and ApplyHighlightMessage. |
| Settings | UCrimsonActionBarSettings | Project Settings -> Crimson -> Crimson Action Bar. |
Slot binding vocabulary (SlotBinding/) | UCrimsonSlotBindingComponent, UCrimsonSlotBindingProvider, FCrimsonSlotBinding, FCrimsonSlotDefinition, UCrimsonSlotBindingStatics | The store and provider contract every view over the same bindings shares - bars here, and any other view (a radial wheel, a picker, a spellbook) you point at the same LayoutId. |
Plugin dependencies
| Group | Dependency | Why |
|---|---|---|
| Crimson plugins | None - fully standalone | The slot binding store, provider contract, bridge interfaces and delegates all ship inside this plugin. |
| Engine plugins | GameplayAbilities, EnhancedInput, GameFeatures, ModularGameplay, CommonUI | Declared in the .uplugin; enabling CrimsonActionBar enables them. |
| Engine modules | GameplayAbilities, GameplayTasks | Ability provider (stock ASC calls). |
| Engine modules | EnhancedInput, InputCore, CommonInput | Slot keys, keybind text, device filtering. |
| Engine modules | GameplayTags, DeveloperSettings, NetCore, Core, CoreUObject, Engine | Tags, settings, replication helpers. |
| Engine modules | UMG, GameFeatures, ModularGameplay | Bar / slot widget classes on the layout's style; the Add Crimson Action Bars Game Feature action. |
The bridges - ICrimsonSlotBindingPresentable, ICrimsonSlotBindingObjectResolver, and the provider adapters UCrimsonSlotBindingAbilityAdapter / UCrimsonSlotBindingObjectAdapter - are optional. Implement the interfaces on your ability and item classes and your item container, subclass the adapters for your ability system, and every slot lights up: real name, icon, description, charges, cost, stock count, Tap / Hold / Toggle input semantics. Implement none and the plugin falls back to stock GAS and stock Enhanced Input, and shows less. See Concept: Providers and Identity.
Source/CrimsonCore/{Public,Private}/Integration/ActionBar/: UCrimsonCoreActionBarIntegrationSubsystem binds FCrimsonActionBarIntegrationHooks, and UCrimsonCoreActionBarAbilityAdapter / UCrimsonCoreActionBarObjectAdapter light up ability and inventory slots. To wire it yourself, read CrimsonCommon -> Concept: Connecting Crimson Plugins; for everything CrimsonCore installs, read CrimsonCore -> Concept: The Integration Layer.