CrimsonActionBar

Requires GameplayAbilities for ability slots
The shipped Gameplay Abilities provider drives a 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.

No UI ships in this plugin
CrimsonActionBar is the data, input and state layer. Build slot widgets on whatever UI framework you use and bind them to 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

SystemKey typesPurpose
BarsUCrimsonActionBarComponentPages, input, per-slot snapshots, edit validation, layout sets, save data. One per player, on the PlayerController.
LayoutUCrimsonActionBarLayoutDefinition, FCrimsonActionBarDefinition, FCrimsonActionBarPageDefinitionData asset: bars -> pages -> slots, slot input actions, providers, optional mapping context.
SnapshotsFCrimsonActionBarSlotState, FCrimsonActionBarSlotAddressWhat a slot widget reads. Static half (FCrimsonSlotBindingDisplay) + live half (FCrimsonSlotBindingLiveState).
ProvidersUCrimsonSlotBindingProvider_Ability, _Object, _SequenceGranted abilities; container-owned things by identity; first-usable macros.
MessagesFCrimsonActionBarSlotChangedMessage, ...PageChangedMessage, ...HighlightMessageComponent delegates OnSlotChangedMessage / OnPageChangedMessage (plus ...Native twins carrying the ActionBar.Message.* channel) and ApplyHighlightMessage.
SettingsUCrimsonActionBarSettingsProject Settings -> Crimson -> Crimson Action Bar.
Slot binding vocabulary (SlotBinding/)UCrimsonSlotBindingComponent, UCrimsonSlotBindingProvider, FCrimsonSlotBinding, FCrimsonSlotDefinition, UCrimsonSlotBindingStaticsThe 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

GroupDependencyWhy
Crimson pluginsNone - fully standaloneThe slot binding store, provider contract, bridge interfaces and delegates all ship inside this plugin.
Engine pluginsGameplayAbilities, EnhancedInput, GameFeatures, ModularGameplay, CommonUIDeclared in the .uplugin; enabling CrimsonActionBar enables them.
Engine modulesGameplayAbilities, GameplayTasksAbility provider (stock ASC calls).
Engine modulesEnhancedInput, InputCore, CommonInputSlot keys, keybind text, device filtering.
Engine modulesGameplayTags, DeveloperSettings, NetCore, Core, CoreUObject, EngineTags, settings, replication helpers.
Engine modulesUMG, GameFeatures, ModularGameplayBar / 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.

Using with other Crimson plugins
CrimsonActionBar works alone. When you own other Crimson plugins, CrimsonCore contains the full-suite wiring for it in 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.
Which path do I choose?
First bar on screen: Quick Start. Stance / vehicle bars: How-To: Set Up Pages. Diamonds, arcs, a special slot: How-To: Shape a Bar. Widgets: How-To: Bind a Slot Widget. Your own bindable things: How-To: Write a Provider. Everything else: API Reference.