Skip to content

Class: MultiPointer ​

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:77

MultiPointer orchestrates multiple pointer types using priority-based selection.

Remarks ​

  • Priority order: Touch > Grab > Ray
  • Uses state machine: DISABLED ↔ NORMAL ↔ HOVER ↔ SELECT
  • Selection lock: Once a pointer starts selecting, it stays locked until release
  • Hysteresis: Touch pointer uses separate enter/exit thresholds to prevent flickering

Constructors ​

Constructor ​

new MultiPointer(handedness, scene, camera, xrOrigin): MultiPointer

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:116

Parameters ​

handedness ​

"left" | "right"

scene ​

Object3D

camera ​

PerspectiveCamera

xrOrigin ​

XROrigin

Returns ​

MultiPointer

Methods ​

dispose() ​

dispose(): void

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:783

Dispose of all pointer resources. Call this when the MultiPointer is no longer needed.

Returns ​

void


getActiveKind() ​

getActiveKind(): PointerKind

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:652

Get the currently active pointer kind

Returns ​

PointerKind


getActivePointer() ​

getActivePointer(): Pointer

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:689

Get the currently active pointer

Returns ​

Pointer


getPointer() ​

getPointer(kind): Pointer

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:699

Get a specific pointer by kind

Parameters ​

kind ​

PointerKind

Returns ​

Pointer


getPolicyForRay() ​

getPolicyForRay(): object

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:600

Get the policy for ray visual rendering

Returns ​

object

forceHideRay ​

forceHideRay: boolean


getRayBusy() ​

getRayBusy(): boolean

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:616

Check if ray is busy (has intersection)

Returns ​

boolean


getSubPointerState() ​

getSubPointerState(kind): object

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:644

Get the registration state of a sub-pointer

Parameters ​

kind ​

PointerKind

Returns ​

object

registered ​

registered: boolean


getTouchSurfaceVisualOffset() ​

getTouchSurfaceVisualOffset(target): Vector3

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:660

Computes a world-space offset that keeps the hand visual's fingertip on the touched surface while the touch pointer is actively selecting.

Parameters ​

target ​

Vector3 = ...

Returns ​

Vector3


routeDown() ​

routeDown(kind, target, nativeEvent): void

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:707

Route a down event to a specific pointer target. Used by grab-system for hand pinch gestures.

Parameters ​

kind ​

"select" | "squeeze" | "custom"

target ​

"active" | "ray" | "grab"

nativeEvent ​
timeStamp ​

number

Returns ​

void


routeUp() ​

routeUp(kind, target, nativeEvent): void

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:724

Route an up event to a specific pointer target. Used by grab-system for hand pinch gestures.

Parameters ​

kind ​

"select" | "squeeze" | "custom"

target ​

"active" | "ray" | "grab"

nativeEvent ​
timeStamp ​

number

Returns ​

void


toggleSubPointer() ​

toggleSubPointer(kind, enabled): boolean

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:623

Toggle a sub-pointer on/off

Parameters ​

kind ​

PointerKind

enabled ​

boolean

Returns ​

boolean


update() ​

update(connected, delta, time, input?): void

Defined in: packages/xr-input/src/pointer/multi-pointer.ts:177

Main update loop - implements priority-based pointer selection

Parameters ​

connected ​

boolean

delta ​

number

time ​

number

input? ​

MultiPointerInput

Returns ​

void

Privacy | Terms