Skip to main content

Interaction Flow

Interactions are started from the local player by calling:

  • UEDPlayerInteractionComponent::Interact(bool bEntering)

Recommended input semantics:

  • Pressed → Interact(true)
  • Released → Interact(false)

High-level flow

  1. Player focuses a target (actor or foliage instance).
  2. Player presses Interact.
  3. Client-side logic decides which interaction method applies.
  4. Client sends an RPC to the server.
  5. Server validates the request and executes the interaction.
  6. Server notifies the owning client (and sometimes other clients) via multicast / client RPCs and delegates.

Single

  • On pressed: the request is sent to the server.
  • On server: validation passes → UEDInteractableComponent::PlayerInteracted(...).

After Duration (Hold)

  • On pressed: client starts progress (UI).
  • Server starts an authoritative timer.
  • While holding: server periodically re-validates the target (distance/LoS/direct-trace depending on settings).
  • On release: server cancels the timer and client resets progress.
  • On completion: server executes PlayerInteracted(...).

HitPoints

For HitPoints interactables, the server applies damage repeatedly using cooldown as a repeat interval.

Event timing can be configured per interactable via:

  • FEDInteractionInfo::HitPointsInteractionEventTrigger

Button Mashing

  • Each press increases a local counter.
  • When the counter reaches the required amount, the client requests the interaction on the server.

Local validation

The component contains a local validation helper used to avoid “wasted” requests when the client already knows it cannot interact:

  • Focus must be valid and still match
  • In some flows, validation can retry using “last direct hit” state

Common deny reasons

The plugin communicates deny reasons using:

  • EEDInteractionDenyReason
  • Local_OnInteractionDenied delegate
  • Widget event OnInteractionDenied(...)

The most common deny reasons:

  • Cooldown
  • Distance / LineOfSight
  • Denied by interactable flags
  • Filtered by whitelist/blacklist/tag query