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 deliberately ships no abilities, no widgets, and no input bindings: you author a small interact ability around its tasks, and the Quick Start walks you through the complete implementation - roughly 100 lines you own and can extend.
About CrimsonCore
CrimsonCore is the free aggregator plugin of the Crimson suite - you can download it and read all of its code on GitHub. It provides a prebuilt version of everything you author here: a turnkey interact ability, duration ability, prompt widgets, world indicators, and a drop-in interactable actor. However, it depends on every other Crimson plugin - adding it (or copying its classes) to a project that does not have all Crimson plugins installed will not compile due to missing dependencies. Most projects therefore cannot use it, so this wiki documents everything without CrimsonCore; the few mentions of it are labeled (CrimsonCore - requires all Crimson plugins) and are always optional.
What's included (this plugin)
| System | Key Types | Purpose |
|---|---|---|
| Scan tasks | UCrimsonAbilityTask_WaitForInteractableTargets (+ _TopDownTrace, _SingleLineTrace) | Detect interactables (cursor or forward trace), gather + filter their options, broadcast changes to your ability. |
| Grant task | UCrimsonAbilityTask_GrantNearbyInteraction | Server-only: grants each nearby option's abilities to the avatar's ASC and revokes them when out of range. |
| Statics | UCrimsonInteractionStatics | Target/actor resolution helpers and TriggerInteractionOption - fire an option's ability by replicated handle from Blueprint or C++. |
| Duration UI payload | UCrimsonInteractionDurationContext | UIExtension payload object for progress widgets during timed interactions; OnProgressChanged per-instance delegate. |
| Target actor | ACrimsonGameplayAbilityTargetActor_Interact | AGameplayAbilityTargetActor_Trace base for reticle-style targeting (not used by the scan tasks). |
| Settings | UCrimsonInteractionSettings | Project-wide scan defaults (channel, profiles, range/rate, debug). Project Settings -> Crimson -> Crimson Interaction. |
| Collision profiles | Interactable_OverlapDynamic, Interactable_BlockDynamic | Shipped via the plugin's Config/DefaultEngine.ini for a dedicated-channel setup. |
The rest of the stack
| Plugin | Availability | What it contributes |
|---|---|---|
CrimsonCommon | Required (installed with this plugin) | The contract: ICrimsonInteractableTarget, ICrimsonInteractionInstigator, FCrimsonInteractionOption, FCrimsonInteractionQuery, FCrimsonInteractionProgressMessage, the message bus, and the UIExtension system. |
CrimsonCore | Optional - free to download, but compiles only with all Crimson plugins installed | Prebuilt layer: ready-made interact / duration / handler abilities, ACrimsonInteractableActor, the HUD prompt widget, world indicators, and the Ability.Interaction.* tags. Everything it does, you build yourself in the Quick Start. |
CrimsonUI | Optional | The indicator manager used by CrimsonCore's world-indicator prompt mode. |
CrimsonInput | Optional | UInputTriggerCrimsonPressAndHold - the safe Enhanced Input trigger for shared interact actions. |
Plugin dependencies
| Type | Name |
|---|---|
| Crimson | CrimsonCommon (only Crimson dependency) |
| 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), built step by step with no other plugins.
- Quick Start done? How-To: Add Holds, Channels & a Progress Prompt extends it.
- 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.