UIsdkGrabbableComponent as hand and controller grab. There is no gaze-specific interactable to add to the object. Any actor that is already grabbable becomes a gaze-grab candidate the moment the pawn enters gaze mode, subject to that grabbable allowing RayGrab and to its own gaze policy (see Per-Object Gaze Policy).UIsdkGrabbableComponent::AllowedGrabDetectorTypes defaults to HandGrab only, so a fresh grabbable is invisible to gaze until you enable RayGrab on it. A grabbable with RayGrab disallowed does not appear as a gaze-grab target, even while gaze is targeting it. For step-by-step setup, see Create a Gaze-Grabbable Object.
HandGrab, RayGrab, and DistanceGrab so the exit path can restore them exactly.RayGrab allowed and DistanceGrab disallowed on the grabber. HandGrab is left at its default, so near-hand grab continues to work alongside gaze.
UIsdkGazeTargetingComponent, which you reach from the pawn’s UIsdkGazeRigComponent via GetGazeTargeting(). Call GetCurrentGrabbable() for the current target and bind OnGazeGrabbableChanged to react to transitions, including transitions to and from nullptr. OnGazeGrabbableMove fires when the hit point on the same grabbable moves.// In your Actor header, declare a UFUNCTION handler for AddDynamic.
UFUNCTION()
void HandleGazeGrabbableChanged(UIsdkGrabbableComponent* NewGrabbable);
// In your Actor's BeginPlay. The pawn owns the UIsdkGazeRigComponent.
void AMyGazeConsumer::BeginPlay()
{
Super::BeginPlay();
if (UIsdkGazeRigComponent* GazeRig = FindComponentByClass<UIsdkGazeRigComponent>())
{
if (UIsdkGazeTargetingComponent* Targeting = GazeRig->GetGazeTargeting())
{
Targeting->OnGazeGrabbableChanged.AddDynamic(
this, &AMyGazeConsumer::HandleGazeGrabbableChanged);
UIsdkGrabbableComponent* Current = Targeting->GetCurrentGrabbable();
// Use Current for the initial state if a grabbable is already hovered at BeginPlay.
}
}
}

GrabInteractionBehavior on UIsdkGazeRigComponent controls what happens to the gaze far-UI pointer, used for UI panels, while any hand is holding a grab. It does not gate the injected ray-grab detector on the grabber. The default is AllowNewHovers.| Value | Effect on Gaze Far UI While a Grab Is Held |
|---|---|
AllowNewHovers | No extra suppression. New hovers and selects on the far-UI interactor are allowed. |
BlockNewHovers | No new hover or select on the far-UI interactor. An already-active hover is left alone. |
DropAllHovers | No new hover or select, and any active hover on the far-UI interactor is torn down for the duration of the held grab. |
UIsdkGrabbableComponent::GazePolicy is an EIsdkGazePolicy on the grabbable that opts an individual object in or out of gaze targeting. The default is UsePluginSetting, which defers to the plugin’s Allow Gaze By Default setting.| Value | Display Name | Behavior |
|---|---|---|
UsePluginSetting | Use Plugin Setting | Defers to the plugin’s Allow Gaze By Default setting. |
Allow | Allow | The grabbable participates in gaze targeting regardless of the plugin default. |
Disallow | Disallow | The grabbable is excluded from gaze targeting regardless of the plugin default. |

Disallow grabbable is still reported through GetCurrentGrabbable() and still fires OnGazeGrabbableChanged. Gaze targeting does not filter by policy; the filter runs one step later, when the gaze rig hands a candidate to the grabbers. If you drive a hover highlight from OnGazeGrabbableChanged, expect a Disallow object to light up and then refuse to grab. Bind highlights to the grabber’s hover state, or read GazePolicy on the reported grabbable, if you want the highlight to match what is grabbable.