---
generated_by: gdlink-build
generated_at: 2026-06-23T12:34:28Z
do_not_edit: true
title: XR Interaction
brick_type: executor
tier: Pro
generated: true
---
# XR Interaction
**Category:** Executor
**Tier:** Pro
## Purpose
Handles all hand-to-object and hand-to-UI interactions: grabbing, throwing, poking, UI pointing, and AR anchor management.
## Visual Reference
```{raw} html
```
## Runtime Behavior
**Inputs**
- **Activate** (Boolean): Triggers the selected interaction.
**Properties**
**Core (always visible)**
- **interaction_mode** (Enum, default `"Grab"`): `Grab`, `Release/Throw`, `Poke`, `UI Pointer`, `Anchor`
**Grab Mode (`visible_if: {interaction_mode: "Grab"}`)**
- **grab_mode** (Enum, default `"Snap"`): `Snap` (freeze and drive the object's world transform from the hand/controller), `Physics Joint` (6DOF joint for weighted movement)
- **precision_grab** (Bool, default `true`): Maintain relative offset between hand and object on contact.
- **max_weight** (Float, default `10.0`): Objects heavier than this are rejected (absorbed from demoted Grab Gate).
- **lock_check** (Bool, default `true`): Prevent dual-hand conflicts on same object (absorbed from demoted Grab Gate).
- **max_grab_distance** (Float, default `0.2`): Maximum hand-to-object distance to initiate grab (absorbed from demoted Interaction Gate).
- **snap_zone** (Bool, default `false`): If true, the grab target is a snap zone — object snaps to zone's transform on release nearby.
- **Fixture convention**: Pickable objects in group `xr_twist_fixture` are constrained fixtures. They remain frozen at their authored origin and rotate around their local grip axis while held instead of being translated or thrown.
**Release/Throw Mode (`visible_if: {interaction_mode: "Release/Throw"}`)**
- **velocity_source** (Enum, default `"Tracker"`): `Tracker` (current frame velocity), `History` (averaged over last N frames)
- **throw_multiplier** (Float, default `1.0`): Scale factor on release velocity.
...
```{raw} html
Max Weight10.0
v
Max Dist0.2
v
VelocityTracker
Throw Mult1.0
v
FingerIndex
Depth (m)0.01
v
SourceRight Hand
EventLeft Click
OperationCreate
Name
v
Lock Check
Snap Zone
```
## Properties
| Property | Type | Default | Notes |
|---|---|---|---|
| Mode | option | Grab | Interaction type |
| Grab | option | Snap | Snap: instant reparent. Physics Joint: 6DOF joint |
| Precision | bool | True | Maintain offset between hand and object |
| Max Weight | float | 10.0 | Objects heavier than this are rejected |
| Max Dist | float | 0.2 | Maximum hand-to-object distance to initiate |
| Lock Check | bool | True | Prevent dual-hand conflicts on same object |
| Snap Zone | bool | False | Target is a snap zone (object snaps on release nearby) |
| Velocity | option | Tracker | Current frame or averaged over N frames |
| Throw Mult | float | 1.0 | Scale factor on release velocity |
| Delay | float | 0.0 | Seconds to wait before applying velocity |
| Finger | option | Index | Finger for poke interaction |
| Depth (m) | float | 0.01 | Activation penetration depth |
| Source | option | Right Hand | Controller for UI ray |
| Event | option | Left Click | Input event to inject |
| Operation | option | Create | Anchor lifecycle operation |
| Name | string | | Anchor identifier |