GameFeatureActions

CrimsonCore provides a full set of UGameFeatureAction subclasses that compose any feature into an experience via data assets, and uses the input actions that ship in CrimsonInput alongside them. All GFAs are reversible - they undo their changes when the experience deactivates or the feature plugin is unloaded.

GFA classWhat it does
UCrimsonGameFeatureAction_AddAbilitiesGrants UCrimsonAbilitySets (abilities + attribute sets + effects) to actors matching a class filter. Revokes on deactivate.
UCrimsonGameFeatureAction_AddInputBinding (ships in CrimsonInput)Registers UCrimsonInputConfigs with the pawn's ICrimsonInputConfigReceiver - UCrimsonHeroComponent is CrimsonCore's implementation of it. Removes bindings on deactivate.
UCrimsonGameFeatureAction_AddWidgetPushes HUD layouts and registers widget extensions via UIExtensionSubsystem. Removes them on deactivate.
UCrimsonGameFeatureAction_AddTeamsAttaches UCrimsonTeamAgentComponent and populates team / hostile tags. Tears down on deactivate.
UCrimsonGameFeatureAction_AddInventoryAttaches UCrimsonInventoryManagerComponent with constraint and currency tables.
UCrimsonGameFeatureAction_AddEquipmentSlotsAttaches UCrimsonEquipmentSlotsComponent and UCrimsonEquipmentManagerComponent with a configured slot layout.
UCrimsonGameFeatureAction_AddNPCSpawnerPrimes UCrimsonEnemySpawnerSubsystem before spawner actors tick.
UCrimsonGameFeatureAction_AddContainerInstancesRegisters UCrimsonHUDContainerData payloads at a HUD extension slot.
UCrimsonGameFeatureAction_SetupCameraPer-feature camera setup: assigns a UCrimsonLockOnConfig to the pawn's lock-on component (adds it if missing), optionally adds a lockable target component, and optionally overrides the pawn's default camera mode. Composes with existing components and restores all on deactivate.
UCrimsonGameFeatureAction_SplitscreenConfigReference-counted vote to disable splitscreen for the active world.
UCrimsonGameFeatureAction_AddGameplayCuePathRegisters gameplay cue notify paths with UAbilitySystemGlobals when the feature registers (not just when it activates).

Typical ExperienceDefinition setup

text
DA_Experience_Dungeon
DefaultPawnData = DA_PawnData_Fighter
GameFeaturesToEnable = ["DungeonFeature"]
Actions:
[0] UCrimsonGameFeatureAction_AddAbilities
AbilitiesList[0].ActorClass = BP_YourCharacter
AbilitiesList[0].GrantedAbilitySets = [DA_AbilitySet_Fighter]
[1] UCrimsonGameFeatureAction_AddInputBinding (CrimsonInput)
InputConfigs[0] = DA_InputConfig_Fighter
[2] UCrimsonGameFeatureAction_AddWidget
Widgets[0].LayerTag = UI.Layer.Game
Widgets[0].WidgetClass = WBP_HUD_Dungeon
[3] UCrimsonGameFeatureAction_AddTeams
TeamsToAdd = [TAG_Team_Player, TAG_Team_Enemy]