API Reference

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

Contract

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), Conditions / ConditionSets (UCrimsonInteractionCondition requirements, evaluated by the scan task and re-checked on the server), bInformational (a message: no key glyph, never fires, grayed in the menu; set by a failed ShowInformational condition or by hand).
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).
FCrimsonInteractionProgressMessage (CrimsonCore)StructLives in CrimsonCore with the tag Message.Interaction.Progress; standalone, use UCrimsonInteractionDurationContext::OnProgressChanged.
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, evaluates each option's conditions (Hide drops it, ShowInformational keeps it as a message that skips the ability check), filters the rest 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 moved to CrimsonCore's UCrimsonCoreInteractionStatics.) C++-only: AppendInteractableTargetsFromOverlapResults.
UCrimsonInteractionDurationContextUObject (BlueprintType)Data object 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.
One ability, one tag
This plugin ships one ability, UCrimsonGameplayAbility_BasicInteract, and registers one gameplay tag, Ability.Interaction.Activate (its default event tag; CrimsonCore uses the same string). Message.Interaction.Progress belongs to CrimsonCore; any other Ability.Interaction.* strings are conventions you define yourself (How-To: Write Your Own Interact Ability step 1).

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 How-To: Write Your Own Interact Ability 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 (each option carries its own Conditions: a key, a level, a tag query; CrimsonCore's ACrimsonCoreDoor gates its own options the same way, for keys and a lockpick), 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.