CrimsonInteraction

GAS projects ONLY
CrimsonInteraction is built for the Gameplay Ability System and nothing else. Every scan task is a UAbilityTask that must be spawned from a running UGameplayAbility, options are filtered by CanActivateAbility, and interactions fire as gameplay events on a UAbilitySystemComponent. If your project does not use GAS - if your pawn (or its player state) does not own an ASC - this plugin cannot function and there is no non-GAS fallback. Set up GAS first, then come back.

CrimsonInteraction is the mechanism layer for player interaction. It ships the GAS ability tasks that detect nearby ICrimsonInteractableTarget actors (cursor or forward trace), filter their options by what the player can actually activate, and keep each option's ability granted on the server - plus the statics, settings, and helpers that glue those pieces to your interact ability. It also ships Crimson Basic Interact, a ready-to-grant instant interact ability that runs those tasks and binds your interact input, so the Quick Start gets you interacting with one handler ability and one interactable. For holds, channels and prompts you author your own interact ability around the same tasks (How-To: Write Your Own Interact Ability). It ships no widgets.

Using with other Crimson plugins
CrimsonInteraction works on its own - this wiki builds everything without other plugins. When you own other Crimson plugins, CrimsonCore (free to download, but compiles only with all Crimson plugins installed) contains the full-suite wiring for it in Source/CrimsonCore/.../Integration/Interaction/ and .../Integration/InteractionUI/: UCrimsonCoreInteractionStatics and UCrimsonInteractionContextActionContributor feed interaction options into the UI context menu, and UCrimsonCoreGameplayAbility_Interact is a prebuilt interact ability with prompt widgets. To wire it yourself, read CrimsonCommon -> Concept: Connecting Crimson Plugins; to see how CrimsonCore does it, read CrimsonCore -> Concept: The Integration Layer.

What's included (this plugin)

SystemKey TypesPurpose
Interact abilityUCrimsonGameplayAbility_BasicInteract ("Crimson Basic Interact")Ready-to-grant instant interact ability on the engine's UGameplayAbility: activates itself, scans (line trace or top-down), grants nearby options' abilities on the server, binds your interact action and fires the focused option on press.
Scan tasksUCrimsonAbilityTask_WaitForInteractableTargets (+ _TopDownTrace, _SingleLineTrace)Detect interactables (cursor or forward trace), gather + filter their options, broadcast changes to your ability.
ConditionsUCrimsonInteractionCondition (+ _And, _Or, _Not, _TagQuery), UCrimsonInteractionConditionSet (both Public/Interaction/)Requirements on an option (a key, a level, a permission). The scan task evaluates them: a failure hides the option or shows it as a message with a met / unmet checklist; the interaction's handler re-checks them on the server. How-To: Gate an Interaction with Conditions.
Grant taskUCrimsonAbilityTask_GrantNearbyInteractionServer-only: grants each nearby option's abilities to the avatar's ASC and revokes them when out of range.
StaticsUCrimsonInteractionStaticsTarget/actor resolution helpers and TriggerInteractionOption - fire an option's ability by replicated handle from Blueprint or C++.
Duration UI payloadUCrimsonInteractionDurationContextData object for progress widgets during timed interactions; OnProgressChanged per-instance delegate.
Target actorACrimsonGameplayAbilityTargetActor_InteractAGameplayAbilityTargetActor_Trace base for reticle-style targeting (not used by the scan tasks).
SettingsUCrimsonInteractionSettingsProject-wide scan defaults (channel, profiles, range/rate, debug). Project Settings -> Crimson -> Crimson Interaction.
Collision profilesInteractable_OverlapDynamic, Interactable_BlockDynamicShipped via the plugin's Config/Engine.ini for a dedicated-channel setup; registered automatically.

The rest of the stack

PluginAvailabilityWhat it contributes
Crimson pluginsNone requiredFully standalone: the contract (ICrimsonInteractableTarget, ICrimsonInteractionInstigator, FCrimsonInteractionOption, FCrimsonInteractionQuery, the conditions) ships in this plugin under Public/Interaction/.
Enhanced InputRequired (Epic engine plugin, on by default)The UInputAction + UInputMappingContext you bind your interact key to, and UEnhancedInputComponent::BindAction on the pawn. This plugin ships no input assets: you set your interact action on Crimson Basic Interact, which binds it for you.
CrimsonCoreOptional - free to download, but compiles only with all Crimson plugins installedPrebuilt layer: ready-made interact / duration / handler abilities, ACrimsonInteractableActor, the HUD prompt widget, world indicators, and the Ability.Interaction.* tags. Everything it does, you can build yourself in How-To: Write Your Own Interact Ability and How-To: Add Holds, Channels & a Progress Prompt.

Plugin dependencies

TypeName
CrimsonNone
Engine modules (public)Core, CoreUObject, Engine, GameplayTags, GameplayAbilities, GameplayTasks, EnhancedInput, UMG, DeveloperSettings
Engine modules (private)NetCore
Works with zero collision setup
The default Interaction Trace Channel is Visibility, so any actor with default collision is detected immediately. The plugin also ships Interactable_OverlapDynamic / Interactable_BlockDynamic profiles for a dedicated response set - see How-To: Configure Collision.

Where to go next

  • New here? Quick Start - the complete working loop (detect, prompt, press, react) with Crimson Basic Interact, no other plugins.
  • Need holds or channels? How-To: Write Your Own Interact Ability, then How-To: Add Holds, Channels & a Progress Prompt.
  • Need the prerequisite nodes and getters? How-To: Get the Building Blocks.
  • Want the mental model? Concept: The Three Layers and Concept: Scan, Gather, Filter, Broadcast.
  • Need an exact signature? API Reference.