API Reference

Complete reference for all OwnInteract components, types, properties, events, and functions.


Data Types

EInteractionType

Value Description
Instant Triggers immediately on input press
Hold Player must hold for HoldDuration seconds
InstantAndHold Tap (under TapThreshold) = Instant; Hold = Hold

EInteractionDetectionMethod

Value Description Best For
LineTrace Single ray from camera center FPS, precision
SphereTrace Swept sphere along ray Third-person
Overlap Radius sphere around player Proximity-based
Cone Distance + angle combination VR, wide scanning

FInteractionData

Configuration struct for a single interaction. Used in InteractableComponent.InteractionData, InteractionPoints[], and InteractionOptions[].

Property Type Default Description
InteractionName FText Display name shown in widget (“Open Door”)
InteractionDescription FText Optional additional description
InteractionType EInteractionType Instant How the interaction triggers
HoldDuration float 1.0 Seconds to hold (Hold / InstantAndHold), clamped 0.1–10.0
TapThreshold float 0.2 Tap detection window (InstantAndHold), clamped 0.05–1.0
Priority int32 0 Higher wins when multiple objects overlap
Cooldown float 0.0 Seconds before reuse, clamped 0.0–60.0
bRequiresServerAuthority bool true If false, executes locally (no server RPC)
bReplicateHoldProgress bool false Multicast hold progress to all clients (~10/sec)

FInteractionPoint

Defines a single interaction zone on an object. Used in InteractableComponent.InteractionPoints[].

Property Type Default Description
RelativeLocation FVector (0,0,0) Position of this zone relative to the actor’s root
DetectionRadius float 30 Radius in cm for point-to-ray detection, clamped 5–500
InteractionData FInteractionData The interaction configuration for this specific zone
bIsEnabled bool true Enable or disable this point at runtime

InteractionComponent

Type: UInteractionComponent (ActorComponent) Attach to: Player Character or AI Character

Handles object detection, multi-point/option tracking, input management, hold timing, input device detection, and all RPCs.


Detection Properties

Property Type Default Description
DetectionMethod EInteractionDetectionMethod LineTrace Detection method to use
InteractionDistance float 500 Maximum detection range in cm
MinInteractionDistance float 0 Minimum detection range in cm
SphereTraceRadius float 30 Sphere radius for Sphere Trace method
MaxDetectionAngle float 45 Max angle from camera forward (Cone / Angle filter)
DetectionInterval float 0.1 How often detection runs in seconds (0.01–1.0)
bShowDebug bool false Draw debug visualization in editor

Filtering Properties

Property Type Default Description
bUseAngleFiltering bool false Only detect within camera angle
bUseTagFiltering bool false Only detect tagged objects
bUseDistanceFiltering bool false Filter by min/max distance
RequiredTags TArray<FName> Actor must have ALL these tags
IgnoredTags TArray<FName> Actor with ANY of these tags is ignored

InteractionComponent Functions

Interaction Control

Function Returns Description
StartInteraction() void Begin interaction with focused object
StopInteraction() void Stop current hold interaction
CycleInteractionOption(int32 Direction) void Scroll through options (+1 forward, -1 back)

Input Device

Function Returns Description
SetActiveInputType(bool bIsGamepad) void Notify component of input device change
IsGamepadActive() bool Returns true if gamepad is the active device

AI Support

Function Returns Description
SetInteractionTarget(AActor*) void Manually set interaction target (bypasses detection, for AI)

Query

Function Returns Description
GetCurrentInteractable() AActor* Currently focused actor (or null)
IsInteracting() bool True if a hold is in progress
GetHoldProgress() float Current hold progress 0.0–1.0

Blueprint Events (on InteractionComponent)

Event Parameters Description
OnInteractableFocused Actor, InteractionData New object focused
OnInteractableUnfocused Actor, InteractionData Focus lost
OnInteractionTriggered Actor, InteractionData Instant interaction triggered
OnHoldInteractionStarted Actor, InteractionData Hold began
OnHoldInteractionProgress Actor, InteractionData, Progress Hold progress (0.0–1.0)
OnHoldInteractionCompleted Actor, InteractionData Hold succeeded
OnHoldInteractionCancelled Actor, InteractionData Hold cancelled

Server RPCs (internal)

Called automatically — do not call directly.

RPC Direction Parameters Description
ServerStartInteraction Client → Server Actor, PointIndex, OptionIndex Request start
ServerStopInteraction Client → Server Request stop hold
ServerTapInteraction Client → Server Actor, PointIndex, OptionIndex Confirm tap (InstantAndHold)
ServerCompleteHoldInteraction Client → Server Actor, PointIndex, OptionIndex Confirm hold complete
ClientConfirmInstantInteraction Server → Client Actor Confirm instant to owner
MulticastOnInteract Server → All Actor Trigger multicast events
MulticastOnHoldStarted Server → All Actor Trigger hold started
MulticastOnHoldCancelled Server → All Actor Trigger hold cancelled
MulticastOnHoldCompleted Server → All Actor Trigger hold completed
MulticastOnHoldProgress Server → All Actor, Progress Unreliable, throttled

Replicated State

Property Condition Description
CurrentInteractableActor Always Currently focused interactable
bIsInteracting COND_SkipOwner True during hold (owner manages locally)

InteractableComponent

Type: UInteractableComponent (ActorComponent) Attach to: Interactable Objects


Interaction Data Properties

Property Type Description
InteractionData FInteractionData Single interaction (used when Points and Options are empty)
InteractionPoints TArray<FInteractionPoint> Multi-zone mode — each point has its own data and position
InteractionOptions TArray<FInteractionData> Multi-option mode — player scrolls to choose

Priority: If InteractionPoints has entries → multi-point mode. Else if InteractionOptions has entries → multi-option mode. Else → single interaction mode.


State & Control Properties

Property Type Default Replicated Description
bIsEnabled bool true Yes Can be interacted with
bIsReusable bool true No If false, auto-disables after first use
bIsOnCooldown bool false Yes Cooldown timer active
bHideWidgetWhenUnavailable bool true No Hide vs show-disabled when unavailable

Highlight Properties

Property Type Default Description
bEnableHighlight bool true Enable custom depth outline on focus
HighlightStencilValue int32 1 Stencil value (0–255), match your Post Process material

InteractableComponent Functions

Function Parameters Description
SetEnabled(bool) bEnabled Enable or disable at runtime
ResetCooldown() Immediately end cooldown
SetPointEnabled(int32, bool) PointIndex, bEnabled Enable/disable a specific interaction point
SetHighlightEnabled(bool) bEnabled Manually toggle the highlight outline
IsFocused() Returns true if a player is looking at this
GetFocusingActor() Returns the Actor currently focusing this
HasInteractionPoints() Returns true if multi-point mode is active
HasInteractionOptions() Returns true if multi-option mode is active
GetActivePointIndex() Returns currently active point index (-1 = single)
GetActiveOptionIndex() Returns currently selected option index
SetWorldWidgetComponent(UWidgetComponent*) Component Assign widget component at runtime
GetWorldWidgetComponent() Returns the assigned widget component

Blueprint Events (Delegates)

Focus Events

Event Parameters When
OnFocused Interacting Actor Player starts looking
OnUnfocused Interacting Actor Player stops looking

Instant Events

Event Parameters Authority When
OnInteract Interacting Actor Server Instant triggered — gameplay logic here
OnInteract_Multicast Interacting Actor All Clients Sounds, VFX, visual feedback

Hold Events

Event Parameters Authority When
OnHoldStarted Interacting Actor Server Hold began
OnHoldStarted_Multicast Interacting Actor All Clients Hold began
OnHoldProgress Actor, Progress (0–1) Local Client Every frame — widget updates
OnHoldProgress_Multicast Actor, Progress All Clients If bReplicateHoldProgress = true
OnHoldCompleted Interacting Actor Server Hold succeeded — gameplay logic here
OnHoldCompleted_Multicast Interacting Actor All Clients Hold succeeded
OnHoldCancelled Interacting Actor Server Hold released early
OnHoldCancelled_Multicast Interacting Actor All Clients Hold cancelled

IInteractableInterface — Blueprint Native Events

Override in Blueprint to customize behavior per object.

Function Returns Description
CanInteract(AActor*) bool Return false to block interaction
GetInteractionData() FInteractionData Returns active data (handles point/option routing)
OnInteractionFocused(AActor*) void Focus started (shows widget, enables highlight)
OnInteractionUnfocused(AActor*) void Focus ended (hides widget, disables highlight)
OnInteract(AActor*) void Server — instant gameplay logic
OnInteract_Multicast(AActor*) void All clients — visual feedback
OnInteractionHoldStarted(AActor*) void Server — hold begin
OnInteractionHoldStarted_Multicast(AActor*) void All clients
OnInteractionHoldProgress(AActor*, float) void Local client — 0.0–1.0
OnInteractionHoldProgress_Multicast(AActor*, float) void All clients (if enabled)
OnInteractionHoldCompleted(AActor*) void Server — hold gameplay logic
OnInteractionHoldCompleted_Multicast(AActor*) void All clients
OnInteractionHoldCancelled(AActor*) void Server
OnInteractionHoldCancelled_Multicast(AActor*) void All clients

InteractionWidget

Type: UInteractionWidget (UserWidget) Use as: Parent Class in your Widget Blueprint


Properties

Property Type Default Description
FadeOutDuration float 0.2 Seconds to wait before hiding after unfocus (for animations)
CurrentInteractionData FInteractionData Currently active interaction data (read-only)
bIsVisible bool false Whether widget is currently shown (read-only)

Blueprint Implementable Events

Override these in your Widget Blueprint:

Core Events

Event Parameters When
OnInteractionAvailable(InteractionData) FInteractionData Object focused — update display
OnInteractionUnavailable() Focus lost — start fade-out
OnInteractionTriggered() Instant interaction triggered

Hold Events

Event Parameters When
OnHoldStarted() Hold began
OnHoldProgressUpdated(Progress) float 0.0–1.0 Update progress bar
OnHoldCompleted() Hold succeeded
OnHoldCancelled() Hold cancelled

Multi-Point Events

Event Parameters When
OnInteractionPointFocused(PointData, PointIndex) FInteractionData, int32 Player aims at different zone

Multi-Option Events

Event Parameters When
OnInteractionOptionsAvailable(Options, ActiveIndex) TArray<FInteractionData>, int32 Object with options focused
OnInteractionOptionChanged(ActiveOption, ActiveIndex) FInteractionData, int32 Player scrolled to different option

Input Device

Event Parameters When
OnInputDeviceChanged(bIsGamepad) bool Player switched between keyboard and gamepad

InteractionWidget Functions

Function Description
UpdateInteractionData(FInteractionData) Update data and trigger OnInteractionAvailable
ShowWidget() Show immediately (cancels fade-out)
RequestHide() Begin fade-out → hide after FadeOutDuration
HideWidget() Hide immediately (bypasses fade)
IsGamepadActive() Returns true if gamepad is active input

Quick Reference

Interaction Mode Selection

Condition Mode Used
InteractionPoints has entries Multi-Point
InteractionOptions has entries Multi-Option
Both empty Single interaction (InteractionData)

Interaction Type → Events

Type On Press On Release On Complete
Instant OnInteract + _Multicast
Hold OnHoldStarted + _Multicast OnHoldCancelled + _Multicast OnHoldCompleted + _Multicast
InstantAndHold (tap) OnInteract + _Multicast
InstantAndHold (hold) OnHoldStarted + _Multicast OnHoldCancelled + _Multicast OnHoldCompleted + _Multicast

Event Authority Summary

Event Use For
OnInteract Server-side gameplay logic only
OnInteract_Multicast Sounds, VFX, animations for all players
OnHoldCompleted Server-side reward / state change
OnHoldCompleted_Multicast Success effects for all players
OnHoldProgress Widget progress bar (local only)
Widget Events UI only — always local, never use for gameplay

Setup Checklist

Item Required
InteractionComponent on Character Yes
StartInteraction() bound to press Yes
StopInteraction() bound to release Yes (Hold / InstantAndHold)
CycleInteractionOption() bound to scroll Yes (if using multi-option)
InteractableComponent on object Yes
InteractionName set Yes
WidgetComponent on object Yes (for prompt)
Widget Blueprint with InteractionWidget parent Yes (for prompt)
OnInteractionAvailable implemented in widget Yes (for prompt)
Post Process Volume with outline material Yes (for highlight)

← Core Concepts | Troubleshooting →