Skip to main content

Class: User

Defined in: src/core/User.ts:25

User is an embodied instance to manage hands, controllers, speech, and avatars. It extends Script to update human-world interaction.

In the long run, User is to manages avatars, hands, and everything of Human I/O. In third-person view simulation, it should come with an low-poly avatar. To support multi-user social XR planned for future iterations.

Extends

Constructors

Constructor

new User(): User

Defined in: src/core/User.ts:111

Constructs a new User.

Returns

User

Overrides

Script.constructor

Properties

controllers

controllers: Controller[]

Defined in: src/core/User.ts:106


grabbedObjects

grabbedObjects: Map<number, Map<Mesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material | Material[], Object3DEventMap>, ObjectGrabEvent>>

Defined in: src/core/User.ts:102

Maps a hand index to another map that associates a grabbed mesh with its initial grab event data.


handedness

handedness: number = 1

Defined in: src/core/User.ts:55

The handedness (primary hand) of the user (0 for left, 1 for right, 2 for both).


hands?

optional hands: Hands

Defined in: src/core/User.ts:81

Public data for user interactions, typically holding references to XRHand.


height

height: number = 1.6

Defined in: src/core/User.ts:44

The height of the user in meters.


hoveredObjectsForController

hoveredObjectsForController: Map<Controller, null | Object3D<Object3DEventMap>>

Defined in: src/core/User.ts:86

Maps a controller to the object it is currently hovering over.


input

input: Input

Defined in: src/core/User.ts:104


isXRScript

isXRScript: boolean = true

Defined in: src/core/Script.ts:53

Inherited from

Script.isXRScript


local

local: boolean = true

Defined in: src/core/User.ts:34

Whether to represent a local user, or another user in a multi-user session.


numHands

numHands: number = 2

Defined in: src/core/User.ts:39

The number of hands associated with the XR user.


objectAngle

objectAngle: number

Defined in: src/core/User.ts:70

The angle of a newly spawned object from the user in radians.


objectDistance

objectDistance: number = 1.5

Defined in: src/core/User.ts:65

The distance of a newly spawned object from the user in meters.


panelDistance

panelDistance: number = 1.75

Defined in: src/core/User.ts:49

The default distance of a UI panel from the user in meters.


pivots

pivots: Object3D<Object3DEventMap>[] = []

Defined in: src/core/User.ts:76

An array of pivot objects. Pivot are sphere at the starting tip of user's hand / controller / mouse rays for debugging / drawing applications.


safeSpaceRadius

safeSpaceRadius: number = 0.2

Defined in: src/core/User.ts:60

The radius of the safe space around the user in meters.


scene

scene: Scene

Defined in: src/core/User.ts:105


selectedObjectsForController

selectedObjectsForController: Map<Controller, Object3D<Object3DEventMap>>

Defined in: src/core/User.ts:91

Maps a controller to the object it has currently selected.


touchedObjects

touchedObjects: Map<number, Set<Mesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material | Material[], Object3DEventMap>>>

Defined in: src/core/User.ts:96

Maps a hand index (0 or 1) to a set of meshes it is currently touching.


ux

ux: UX

Defined in: src/core/Script.ts:52

Inherited from

Script.ux


dependencies

static dependencies: object

Defined in: src/core/User.ts:26

input

input: typeof Input = Input

scene

scene: typeof Scene = THREE.Scene

Methods

callHoverEnter()

callHoverEnter(controller, target): void

Defined in: src/core/User.ts:515

Recursively calls onHoverEnter on a target and its ancestors.

Parameters

controller

Controller

The controller entering hover.

target

The object being entered.

null | Object3D<Object3DEventMap>

Returns

void


callHoverExit()

callHoverExit(controller, target): void

Defined in: src/core/User.ts:502

Recursively calls onHoverExit on a target and its ancestors.

Parameters

controller

Controller

The controller exiting hover.

target

The object being exited.

null | Object3D<Object3DEventMap>

Returns

void


callObjectGrabbing()

callObjectGrabbing(event, target): void

Defined in: src/core/User.ts:625

Recursively calls onObjectGrabbing on a target and its ancestors.

Parameters

event

ObjectGrabEvent

The original grabbing event.

target

The object being grabbed.

null | Object3D<Object3DEventMap>

Returns

void


callObjectGrabEnd()

callObjectGrabEnd(event, target): void

Defined in: src/core/User.ts:638

Recursively calls onObjectGrabEnd on a target and its ancestors.

Parameters

event

ObjectGrabEvent

The original grab end event.

target

The object being released.

null | Object3D<Object3DEventMap>

Returns

void


callObjectGrabStart()

callObjectGrabStart(event, target): void

Defined in: src/core/User.ts:612

Recursively calls onObjectGrabStart on a target and its ancestors.

Parameters

event

ObjectGrabEvent

The original grab start event.

target

The object being grabbed.

null | Object3D<Object3DEventMap>

Returns

void


callObjectSelectEnd()

callObjectSelectEnd(event, target): void

Defined in: src/core/User.ts:558

Recursively calls onObjectSelectEnd on a target and its ancestors until the event is handled.

Parameters

event

SelectEvent

The original select end event.

target

The object being un-selected.

null | Object3D<Object3DEventMap>

Returns

void


callObjectSelectStart()

callObjectSelectStart(event, target): void

Defined in: src/core/User.ts:542

Recursively calls onObjectSelectStart on a target and its ancestors until the event is handled.

Parameters

event

SelectEvent

The original select start event.

target

The object being selected.

null | Object3D<Object3DEventMap>

Returns

void


callObjectTouchEnd()

callObjectTouchEnd(event, target): void

Defined in: src/core/User.ts:599

Recursively calls onObjectTouchEnd on a target and its ancestors.

Parameters

event

ObjectTouchEvent

The original touch end event.

target

The object being un-touched.

null | Object3D<Object3DEventMap>

Returns

void


callObjectTouching()

callObjectTouching(event, target): void

Defined in: src/core/User.ts:586

Recursively calls onObjectTouching on a target and its ancestors.

Parameters

event

ObjectTouchEvent

The original touch event.

target

The object being touched.

null | Object3D<Object3DEventMap>

Returns

void


callObjectTouchStart()

callObjectTouchStart(event, target): void

Defined in: src/core/User.ts:573

Recursively calls onObjectTouchStart on a target and its ancestors.

Parameters

event

ObjectTouchEvent

The original touch start event.

target

The object being touched.

null | Object3D<Object3DEventMap>

Returns

void


callOnHovering()

callOnHovering(controller, target): void

Defined in: src/core/User.ts:528

Recursively calls onHovering on a target and its ancestors.

Parameters

controller

Controller

The controller hovering.

target

The object being entered.

null | Object3D<Object3DEventMap>

Returns

void


dispose()

dispose(): void

Defined in: src/core/Script.ts:196

Called when the script is removed from the scene. Opposite of init.

Returns

void

Inherited from

Script.dispose


enablePivots()

enablePivots(): void

Defined in: src/core/User.ts:135

Adds pivots at the starting tip of user's hand / controller / mouse rays.

Returns

void


getControllerObjectDistance()

getControllerObjectDistance(id, object): number

Defined in: src/core/User.ts:255

Calculates the distance between a controller and an object.

Parameters

id

number

The controller id.

object

Object3D

The object to measure the distance to.

Returns

number

The distance between the controller and the object.


getControllerPosition()

getControllerPosition(id, target): Vector3

Defined in: src/core/User.ts:244

Gets the world position of a controller.

Parameters

id

number

The controller id.

target

Vector3 = ...

The target vector to store the result.

Returns

Vector3

The world position of the controller.


getIntersectionAt()

getIntersectionAt(obj, id): undefined | null | Intersection<Object3D<Object3DEventMap>>

Defined in: src/core/User.ts:222

Gets the intersection point on a specific object. Not recommended for general use, since a View / ModelView's ux.positions contains the intersected points.

Parameters

obj

Object3D

The object to check for intersection.

id

number = -1

The controller ID, or -1 for any controller.

Returns

undefined | null | Intersection<Object3D<Object3DEventMap>>

The intersection details, or null if no intersection.


getPivot()

getPivot(id): undefined | Object3D<Object3DEventMap>

Defined in: src/core/User.ts:144

Gets the pivot object for a given controller id.

Parameters

id

number

The controller id.

Returns

undefined | Object3D<Object3DEventMap>

The pivot object.


getPivotPosition()

getPivotPosition(id): undefined | Vector3

Defined in: src/core/User.ts:153

Gets the world position of the pivot for a given controller id.

Parameters

id

number

The controller id.

Returns

undefined | Vector3

The world position of the pivot.


getReticleDirection()

getReticleDirection(controllerId): undefined | Vector3

Defined in: src/core/User.ts:162

Gets reticle's direction in THREE.Vector3. Requires reticle enabled to be called.

Parameters

controllerId

number

Returns

undefined | Vector3


getReticleIntersection()

getReticleIntersection(id): undefined | Intersection<Object3D<Object3DEventMap>>

Defined in: src/core/User.ts:182

Gets the intersection details from the reticle's raycast. Requires options.reticle.enabled.

Parameters

id

number

The controller id.

Returns

undefined | Intersection<Object3D<Object3DEventMap>>

The intersection object, or null if no intersection.


getReticleTarget()

getReticleTarget(id): undefined | Object3D<Object3DEventMap>

Defined in: src/core/User.ts:172

Gets the object targeted by the reticle. Requires options.reticle.enabled.

Parameters

id

number

The controller id.

Returns

undefined | Object3D<Object3DEventMap>

The targeted object, or null.


init()

init(__namedParameters): void

Defined in: src/core/User.ts:118

Initializes the User.

Parameters

__namedParameters
input

Input

scene

Scene

Returns

void

Overrides

Script.init


initPhysics()

initPhysics(_physics): void | Promise<void>

Defined in: src/core/Script.ts:72

Enables depth-aware interactions with physics. See /demos/ballpit

Parameters

_physics

Physics

Returns

void | Promise<void>

Inherited from

Script.initPhysics


isPointingAt()

isPointingAt(obj): boolean

Defined in: src/core/User.ts:191

Checks if any controller is pointing at the given object or its children.

Parameters

obj

Object3D

The object to check against.

Returns

boolean

True if a controller is pointing at the object.


isSelecting()

isSelecting(id): any

Defined in: src/core/User.ts:267

Checks if either controller is selecting.

Parameters

id

number = -1

The controller id. If -1, check both controllers.

Returns

any

True if selecting, false otherwise.


isSelectingAt()

isSelectingAt(obj): boolean

Defined in: src/core/User.ts:205

Checks if any controller is selecting the given object or its children.

Parameters

obj

Object3D

The object to check against.

Returns

boolean

True if a controller is selecting the object.


isSqueezing()

isSqueezing(id): any

Defined in: src/core/User.ts:281

Checks if either controller is squeezing.

Parameters

id

number = -1

The controller id. If -1, check both controllers.

Returns

any

True if squeezing, false otherwise.


onHoverEnter()

onHoverEnter(_controller): void

Defined in: src/core/Script.ts:157

Called when the controller starts hovering over this object with reticle.

Parameters

_controller

Object3D

An XR controller.

Returns

void

Inherited from

Script.onHoverEnter


onHoverExit()

onHoverExit(_controller): void

Defined in: src/core/Script.ts:162

Called when the controller hovers over this object with reticle.

Parameters

_controller

Object3D

An XR controller.

Returns

void

Inherited from

Script.onHoverExit


onHovering()

onHovering(_controller): void

Defined in: src/core/Script.ts:167

Called when the controller hovers over this object with reticle.

Parameters

_controller

Object3D

An XR controller.

Returns

void

Inherited from

Script.onHovering


onKeyDown()

onKeyDown(_event): void

Defined in: src/core/Script.ts:109

Called on keyboard keypress.

Parameters

_event

KeyEvent

Event containing .code to read the keyboard key.

Returns

void

Inherited from

Script.onKeyDown


onKeyUp()

onKeyUp(_event): void

Defined in: src/core/Script.ts:110

Parameters

_event

KeyEvent

Returns

void

Inherited from

Script.onKeyUp


onObjectGrabbing()

onObjectGrabbing(_event): void

Defined in: src/core/Script.ts:187

Called every frame a hand is grabbing this object.

Parameters

_event

ObjectGrabEvent

Returns

void

Inherited from

Script.onObjectGrabbing


onObjectGrabEnd()

onObjectGrabEnd(_event): void

Defined in: src/core/Script.ts:191

Called when a hand stops grabbing this object.

Parameters

_event

ObjectGrabEvent

Returns

void

Inherited from

Script.onObjectGrabEnd


onObjectGrabStart()

onObjectGrabStart(_event): void

Defined in: src/core/Script.ts:183

Called when a hand starts grabbing this object (touching + pinching).

Parameters

_event

ObjectGrabEvent

Returns

void

Inherited from

Script.onObjectGrabStart


onObjectSelectEnd()

onObjectSelectEnd(_event): boolean

Defined in: src/core/Script.ts:150

Called when the controller stops selecting this object the script represents, e.g. View, ModelView.

Parameters

_event

SelectEvent

event.target holds its controller.

Returns

boolean

Whether the event was handled

Inherited from

Script.onObjectSelectEnd


onObjectSelectStart()

onObjectSelectStart(_event): boolean

Defined in: src/core/Script.ts:141

Called when the controller starts selecting this object the script represents, e.g. View, ModelView.

Parameters

_event

SelectEvent

event.target holds its controller.

Returns

boolean

Whether the event was handled

Inherited from

Script.onObjectSelectStart


onObjectTouchEnd()

onObjectTouchEnd(_event): void

Defined in: src/core/Script.ts:179

Called when a hand's index finger stops touching this object.

Parameters

_event

ObjectTouchEvent

Returns

void

Inherited from

Script.onObjectTouchEnd


onObjectTouching()

onObjectTouching(_event): void

Defined in: src/core/Script.ts:175

Called every frame that a hand's index finger is touching this object.

Parameters

_event

ObjectTouchEvent

Returns

void

Inherited from

Script.onObjectTouching


onObjectTouchStart()

onObjectTouchStart(_event): void

Defined in: src/core/Script.ts:171

Called when a hand's index finger starts touching this object.

Parameters

_event

ObjectTouchEvent

Returns

void

Inherited from

Script.onObjectTouchStart


onSelect()

onSelect(_event): void

Defined in: src/core/Script.ts:98

Called whenever pinch / mouse click successfully completes, globally.

Parameters

_event

SelectEvent

event.target holds its controller.

Returns

void

Inherited from

Script.onSelect


onSelectEnd()

onSelectEnd(event): void

Defined in: src/core/User.ts:320

Handles the select end event for a controller.

Parameters

event

SelectEvent

The event object.

Returns

void

Overrides

Script.onSelectEnd


onSelecting()

onSelecting(_event): void

Defined in: src/core/Script.ts:103

Called whenever pinch / mouse click is happening, globally.

Parameters

_event

SelectEvent

Returns

void

Inherited from

Script.onSelecting


onSelectStart()

onSelectStart(event): void

Defined in: src/core/User.ts:294

Handles the select start event for a controller.

Parameters

event

SelectEvent

The event object.

Returns

void

Overrides

Script.onSelectStart


onSimulatorStarted()

onSimulatorStarted(): void

Defined in: src/core/Script.ts:78

Returns

void

Inherited from

Script.onSimulatorStarted


onSqueeze()

onSqueeze(_event): void

Defined in: src/core/Script.ts:132

Called whenever gamepad trigger successfully completes, globally.

Parameters

_event

SelectEvent

event.target holds its controller.

Returns

void

Inherited from

Script.onSqueeze


onSqueezeEnd()

onSqueezeEnd(_event): void

Defined in: src/core/User.ts:348

Handles the squeeze end event for a controller.

Parameters

_event

SelectEvent

The event object.

Returns

void

Overrides

Script.onSqueezeEnd


onSqueezeStart()

onSqueezeStart(_event): void

Defined in: src/core/User.ts:342

Handles the squeeze start event for a controller.

Parameters

_event

SelectEvent

The event object.

Returns

void

Overrides

Script.onSqueezeStart


onSqueezing()

onSqueezing(_event): void

Defined in: src/core/Script.ts:126

Called whenever gamepad is being triggered, globally.

Parameters

_event

SelectEvent

Returns

void

Inherited from

Script.onSqueezing


onXRSessionEnded()

onXRSessionEnded(): void

Defined in: src/core/Script.ts:76

Returns

void

Inherited from

Script.onXRSessionEnded


onXRSessionStarted()

onXRSessionStarted(_session?): void

Defined in: src/core/Script.ts:75

Parameters

_session?

XRSession

Returns

void

Inherited from

Script.onXRSessionStarted


physicsStep()

physicsStep(): void

Defined in: src/core/Script.ts:73

Returns

void

Inherited from

Script.physicsStep


select()

select(obj, controller): null | Intersection<Object3D<Object3DEventMap>>

Defined in: src/core/User.ts:653

Checks if a controller is selecting a specific object. Returns the intersection details if true.

Parameters

obj

Object3D

The object to check for selection.

controller

Object3D

The controller performing the select.

Returns

null | Intersection<Object3D<Object3DEventMap>>

The intersection object if a match is found, else null.


setHeight()

setHeight(camera): void

Defined in: src/core/User.ts:128

Sets the user's height on the first frame.

Parameters

camera

Camera

Returns

void


update()

update(): void

Defined in: src/core/User.ts:354

The main update loop called each frame. Updates hover state for all controllers.

Returns

void

Overrides

Script.update


updateForController()

updateForController(controller): void

Defined in: src/core/User.ts:481

Updates the hover state for a single controller.

Parameters

controller

Controller

The controller to update.

Returns

void


updateGrabState()

updateGrabState(): void

Defined in: src/core/User.ts:369

Checks for and handles grab events (touching + pinching).

Returns

void


updateTouchState()

updateTouchState(): void

Defined in: src/core/User.ts:420

Checks for and handles touch events for the hands' index fingers.

Returns

void