API Reference

Public types grouped by owning plugin. Identifiers are exact; verify against the headers if you extend them.

Contract (CrimsonCommon)

TypeKindPurpose
ICrimsonInteractableTargetInterfaceImplement to be interactable. GatherInteractionOptions (C++) / K2 Gather Interaction Options (BP), CustomizeInteractionEventData (C++ only), OnInteractableHovered / OnInteractableUnhovered, NotifyInteractionSuccess, NotifyInteractionProgress (all four BlueprintNativeEvent).
ICrimsonInteractionInstigatorInterfaceOptional arbitration hook. ChooseBestInteractionOption(Query, Options) (BlueprintNativeEvent) picks the winning option.
FCrimsonInteractionOptionStructText, SubText, InteractionAbilityToGrant (Method 1), TargetAbilitySystem + TargetInteractionAbilityHandle (Method 2, runtime-filled), InteractionWidgetClass, InputType, InputHoldDuration, InteractionActionAbility, InteractableTarget (stamped automatically).
ECrimsonInteractionInputTypeEnumInstant, Hold - the only two values.
FCrimsonInteractionQueryStructRequestingAvatar, RequestingController, OptionalObjectData (all weak pointers).
FCrimsonInteractionOptionBuilderHelper (C++-only)AddInteractionOption - copies the option and stamps InteractableTarget with the gathering scope. Not exposed to Blueprint (the K2 gather path stamps for you).
FCrimsonInteractionProgressMessageStructChannel Message.Interaction.Progress (tag defined in CrimsonCommon). Instigator, Target, Elapsed, Duration, Progress01, bComplete.
Option equality quirk
FCrimsonInteractionOption::operator== compares target, granted/target ability, widget class, and text - it ignores InputType, InputHoldDuration, and InteractionActionAbility. The scan's change-detection therefore does not re-broadcast when only those fields change.

Mechanism (CrimsonInteraction - this plugin)

TypeKindPurpose
UCrimsonAbilityTask_WaitForInteractableTargetsAbilityTask (abstract)Base scan task. InteractableObjectsChanged delegate; CurrentOptions (BP-readable, priority order); UpdateInteractableOptions (BlueprintNativeEvent) gathers, filters by CanActivateAbility, change-detects, broadcasts; SetTraceProfile / GetTraceProfileName.
UCrimsonAbilityTask_WaitForInteractableTargets_SingleLineTraceAbilityTaskNode Wait For Interactable Targets Single Line Trace (Query, TraceChannel, StartLocation, ScanRange=100, ScanRate=0.1, bShowDebug=false). Forward multi-trace through the camera; stops at the first interactable hit.
UCrimsonAbilityTask_WaitForInteractableTargets_TopDownTraceAbilityTaskNode Wait For Interactable Targets Top Down Trace (Query, TraceChannel, GroundTraceProfile, TraceDistance=10000, InteractionDistance=200, InteractionRadius=200, ScanRate=0.1, bShowDebug=false). Cursor deproject + sphere overlap; hover enter/leave on the focused target.
UCrimsonAbilityTask_GrantNearbyInteractionAbilityTaskNode Grant Abilities For Nearby Interactors (ScanRange, ScanRate, TraceChannel). Server-only; grants both InteractionAbilityToGrant and InteractionActionAbility per nearby option (spec SourceObject = avatar, so it replicates); revokes on leave; clears all on destroy.
UCrimsonInteractionStaticsBlueprintFunctionLibraryTriggerInteractionOption(Option, Instigator, EventTag) -> bool (back-fill + payload hook + trigger by handle), GetActorFromInteractableTarget, GetInteractableTargetsFromActor, AppendInteractableTargetsFromHitResult, GetContextActionsForActor. C++-only: AppendInteractableTargetsFromOverlapResults.
UCrimsonInteractionDurationContextUObject (BlueprintType)UIExtension payload for progress widgets. Construct(WidgetClass, Text, Duration), UpdateProgress(Progress, Duration), OnProgressChanged (assignable), WidgetClass / InteractionText / CastDuration (read-only).
ACrimsonGameplayAbilityTargetActor_InteractTargetActorAGameplayAbilityTargetActor_Trace subclass for reticle traces (C++ PerformTrace override). Not used by the scan tasks - for bespoke target-actor workflows.
UCrimsonInteractionSettingsDeveloperSettingsProject Settings -> Crimson -> Crimson Interaction (DefaultCrimsonInteraction.ini). InteractionTraceChannel (Visibility), OverlapProfileName, BlockProfileName, DefaultScanRange (500), DefaultScanRate (0.1), TopDownTraceDistance (10000), TopDownInteractionRadius (200), bShowDebugByDefault (false). C++: UCrimsonInteractionSettings::Get(); not Blueprint-readable.
No tags, no abilities
This plugin defines zero gameplay tags and zero abilities. Message.Interaction.Progress belongs to CrimsonCommon; the Ability.Interaction.* strings are conventions you define yourself (Quick Start step 2) - CrimsonCore happens to use the same strings.

Prebuilt layer (CrimsonCore - requires all Crimson plugins)

Listed for orientation only - these types are not part of CrimsonInteraction. CrimsonCore is free to download and read, but it only compiles in projects that have every Crimson plugin installed. Everything here has a self-built equivalent in Quick Start and How-To: Add Holds, Channels & a Progress Prompt.

TypeKindPurpose
UCrimsonGameplayAbility_InteractGameplayAbility (abstract)Base interact ability: press decision tree, ability-timer holds, instigator hook, target progress, channel launch.
UCrimsonCoreGameplayAbility_InteractGameplayAbilityReady-made: ScanStrategy (TopDown / SingleLineTrace), auto-activation on spawn, input binding via InputTag.Interact, prompt presentation via PromptMode (WorldIndicator / HudSlot / Both / Custom), world indicators, context-menu input. Seeds tunables from UCrimsonInteractionSettings.
UCrimsonGameplayAbility_InteractionDuration / UCrimsonCoreGameplayAbility_InteractionDurationGameplayAbilityChannel base + concrete 3s default. DurationSeconds, CalculateProgressStep, opt-in MaxDistanceFromTarget / bCancelWhenInputReleased, success event on the target ASC.
UCrimsonCoreGameplayAbility_InteractionHandlerGameplayAbilityDefault InteractionAbilityToGrant: triggered by Ability.Interaction.Activate, calls NotifyInteractionSuccess on the target.
ACrimsonInteractableActorActorDrop-in interactable: Details-panel InteractionOptions array, On Interacted / On Interaction Progress / On Hover Changed BP events, optional context menu.
UCrimsonCoreInteractionPromptWidgetWidgetHUD prompt driven by Message.Interaction.OptionsChanged + Message.Interaction.Progress; progress ring via its ActionWidget material layer.
FCrimsonInteractionOptionsChangedMessageStructChannel Message.Interaction.OptionsChanged (CrimsonCore tag). Instigator + Options - drives the prompt without referencing the ability.