Skip to content

Class: MultiPointer

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

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:96

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:735

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:604

Get the currently active pointer kind

Returns

PointerKind


getActivePointer()

getActivePointer(): Pointer

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

Get the currently active pointer

Returns

Pointer


getPointer()

getPointer(kind): Pointer

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

Get a specific pointer by kind

Parameters

kind

PointerKind

Returns

Pointer


getPolicyForRay()

getPolicyForRay(): object

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

Get the policy for ray visual rendering

Returns

object

forceHideRay

forceHideRay: boolean = hideRay


getRayBusy()

getRayBusy(): boolean

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

Check if ray is busy (has intersection)

Returns

boolean


getSubPointerState()

getSubPointerState(kind): object

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

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:612

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:659

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:676

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:575

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:157

Main update loop - implements priority-based pointer selection

Parameters

connected

boolean

delta

number

time

number

input?
selectEnd?

boolean

selectStart?

boolean

squeezeEnd?

boolean

squeezeStart?

boolean

Returns

void

Privacy | Terms