How-To: Choose a Scan Strategy
Goal: detect interactables the way your game's camera works - cursor (top-down) or forward aim (FPS/TPS). On Crimson Basic Interact it is one setting, Scan Mode (Line Trace or Top Down). In your own interact ability it is simply which scan task the ability spawns; both tasks are this plugin's.
Pick a scan task
| Scan task | Use for | How it works |
|---|---|---|
UCrimsonAbilityTask_WaitForInteractableTargets_TopDownTrace | Diablo / PoE cursor games | Deprojects the mouse to the ground, sphere-searches around the hit, sorts by distance to cursor; fires hover enter/leave on the focused target; filters out targets farther than InteractionDistance from the avatar. |
UCrimsonAbilityTask_WaitForInteractableTargets_SingleLineTrace | FPS / over-shoulder TPS | Forward trace through the camera view, clipped to range; focused target = first hit along the aim. Interactables must overlap the trace channel. |
Wire it up
In your own interact ability, swap the scan task call in its activation (How-To: Write Your Own Interact Ability step 3 uses the single-line version). The top-down factory takes a ground-trace profile and cursor radius instead of a start location:
In GA_Interact's Event ActivateAbility graph, delete the Wait For Interactable Targets Single Line Trace node and drop in Wait For Interactable Targets Top Down Trace in its place: Interaction Query = the same Make CrimsonInteractionQuery, Interaction Trace Channel = Visibility, Ground Trace Profile = BlockAll, Trace Distance = 10000, Interaction Distance = 200, Interaction Radius = 200, Interaction Scan Rate = 0.1, Show Debug = unticked.
Re-bind the same Interactable Objects Changed delegate pin to the Custom Event that sets CurrentOptions - nothing downstream changes. The top-down node has no Start Location pin: it deprojects the cursor and sphere-searches around the ground hit instead of tracing forward from the avatar.
bShowDebugByDefault, or the debug flag on the task call) and watch the trace shape match your chosen strategy.UCrimsonAbilityTask_WaitForInteractableTargets, implement your trace, call UpdateInteractableOptions(Query, Targets), and bind InteractableObjectsChanged in your ability. The base stores CurrentOptions in priority order, so CurrentOptions[0] is the focused target. Append Interactable Targets From Hit Result (statics) does the interface collection for you.ScanStrategy enum dropdown - convenience only, same mechanics.