Skip to content

Interactor Runtime Config

UMounteaInteractorRuntimeConfig (UDataAsset) supplies gameplay defaults to every interactor component via SetDefaults().

Fields

Field Type Default Purpose
DefaultInteractorState EInteractorStateV3 EIS_Scanning State interactors boot into
OverlapCollisionChannelName FName InteractionOverlap Overlap channel used by UMounteaInteractorComponentOverlap - must match the Interactable Runtime Config's channel of the same name
TraceCollisionChannelName FName InteractionTrace Channel used for line-of-sight safety validation
InteractorTag FGameplayTag none Default tag assigned to interactors, checked against interactables' Required/Excluded tag filters
SafetyTracingSetup FSafetyTracingSetup ESTM_None Default safety-trace mode (see below)
MaxCandidatesPerActor int32 8 Caps how many action candidates RefreshFocus() keeps for the focused actor
CandidateRefreshRate float (s) 0.05 How often the interactor re-evaluates its candidate list
DefaultInputMappingContext TSoftObjectPtr<UInputMappingContext> none See Enhanced Input helper below
InputMappingPriority int32 0 Priority passed to AddMappingContext for the field above

Both collision channel names carry NoResetToDefault and are auto-registered by the editor module on startup if missing from the project's collision profile.

Safety Tracing

FSafetyTracingSetup guards against overlap volumes detecting an interactable through a wall (a common false-positive for the Overlap interactor, since overlap shapes don't respect line-of-sight):

Mode Behaviour
ESTM_None No secondary trace. Default for Trace/Mouse interactors, since they already trace to detect in the first place.
ESTM_Location Traces from StartLocation (or the owner's location if unset). Default for the Overlap interactor.
ESTM_Socket Traces from a named socket (default "head") on the owner's mesh, falling back to owner location if the socket doesn't exist.

OverrideTraceChannelName on the struct (blank by default) lets a single component override the global trace channel without touching the project-wide config.

Enhanced Input Helper

DefaultInputMappingContext + InputMappingPriority back one optional convenience call: UMounteaInteractorStatics::ApplyDefaultInputMappingContext(Interactor).

// Blueprint-callable static, taking the interactor by interface
UMounteaInteractorStatics::ApplyDefaultInputMappingContext(Interactor);

It adds the configured UInputMappingContext via AddMappingContext for whichever local player controls the interactor's owning actor - safe no-op if the field is unset, the owner isn't a locally-controlled Pawn, or no Enhanced Input subsystem is available (server-only / AI-controlled actors).

It never binds gameplay behaviour

This call only makes the mapping context's key bindings - and any Player Mappable Key Settings on them - active and remappable. It does not wire Start Interaction / Stop Interaction / Cycle Action to anything; you still bind those yourself. It also isn't called automatically anywhere (not BeginPlay, nowhere) - you place the one Blueprint node yourself, wherever your project already sets up input.

Resolving From Code

const UMounteaInteractionSystemSettings* settings = GetDefault<UMounteaInteractionSystemSettings>();
const UMounteaInteractorRuntimeConfig* config = settings ? settings->GetInteractorConfig() : nullptr;

See Interactor System for how these values are consumed by SetDefaults_Implementation().