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
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?
optionalhands: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:54
Inherited from
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:53
Inherited from
dependencies
staticdependencies: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:524
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:511
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:638
Recursively calls onObjectGrabbing on a target and its ancestors.
Parameters
event
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:651
Recursively calls onObjectGrabEnd on a target and its ancestors.
Parameters
event
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:625
Recursively calls onObjectGrabStart on a target and its ancestors.
Parameters
event
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:569
Recursively calls onObjectSelectEnd on a target and its ancestors until the event is handled.
Parameters
event
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:551
Recursively calls onObjectSelectStart on a target and its ancestors until the event is handled.
Parameters
event
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:612
Recursively calls onObjectTouchEnd on a target and its ancestors.
Parameters
event
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:599
Recursively calls onObjectTouching on a target and its ancestors.
Parameters
event
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:586
Recursively calls onObjectTouchStart on a target and its ancestors.
Parameters
event
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:537
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:197
Called when the script is removed from the scene. Opposite of init.
Returns
void
Inherited from
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
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
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
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
scene
Returns
void
Overrides
initPhysics()
initPhysics(
_physics):void|Promise<void>
Defined in: src/core/Script.ts:73
Enables depth-aware interactions with physics. See /demos/ballpit
Parameters
_physics
Returns
void | Promise<void>
Inherited from
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
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
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:158
Called when the controller starts hovering over this object with reticle.
Parameters
_controller
An XR controller.
Returns
void
Inherited from
onHoverExit()
onHoverExit(
_controller):void
Defined in: src/core/Script.ts:163
Called when the controller hovers over this object with reticle.
Parameters
_controller
An XR controller.
Returns
void
Inherited from
onHovering()
onHovering(
_controller):void
Defined in: src/core/Script.ts:168
Called when the controller hovers over this object with reticle.
Parameters
_controller
An XR controller.
Returns
void
Inherited from
onKeyDown()
onKeyDown(
_event):void
Defined in: src/core/Script.ts:110
Called on keyboard keypress.
Parameters
_event
Event containing .code to read the keyboard key.
Returns
void
Inherited from
onKeyUp()
onKeyUp(
_event):void
Defined in: src/core/Script.ts:111
Parameters
_event
Returns
void
Inherited from
onObjectGrabbing()
onObjectGrabbing(
_event):void
Defined in: src/core/Script.ts:188
Called every frame a hand is grabbing this object.
Parameters
_event
Returns
void
Inherited from
onObjectGrabEnd()
onObjectGrabEnd(
_event):void
Defined in: src/core/Script.ts:192
Called when a hand stops grabbing this object.
Parameters
_event
Returns
void
Inherited from
onObjectGrabStart()
onObjectGrabStart(
_event):void
Defined in: src/core/Script.ts:184
Called when a hand starts grabbing this object (touching + pinching).
Parameters
_event
Returns
void
Inherited from
onObjectSelectEnd()
onObjectSelectEnd(
_event):boolean
Defined in: src/core/Script.ts:151
Called when the controller stops selecting this object the script represents, e.g. View, ModelView.
Parameters
_event
event.target holds its controller.
Returns
boolean
Whether the event was handled
Inherited from
onObjectSelectStart()
onObjectSelectStart(
_event):boolean
Defined in: src/core/Script.ts:142
Called when the controller starts selecting this object the script represents, e.g. View, ModelView.
Parameters
_event
event.target holds its controller.
Returns
boolean
Whether the event was handled
Inherited from
onObjectTouchEnd()
onObjectTouchEnd(
_event):void
Defined in: src/core/Script.ts:180
Called when a hand's index finger stops touching this object.
Parameters
_event
Returns
void
Inherited from
onObjectTouching()
onObjectTouching(
_event):void
Defined in: src/core/Script.ts:176
Called every frame that a hand's index finger is touching this object.
Parameters
_event
Returns
void
Inherited from
onObjectTouchStart()
onObjectTouchStart(
_event):void
Defined in: src/core/Script.ts:172
Called when a hand's index finger starts touching this object.
Parameters
_event
Returns
void
Inherited from
onSelect()
onSelect(
_event):void
Defined in: src/core/Script.ts:99
Called whenever pinch / mouse click successfully completes, globally.
Parameters
_event
event.target holds its controller.
Returns
void
Inherited from
onSelectEnd()
onSelectEnd(
event):void
Defined in: src/core/User.ts:324
Handles the select end event for a controller.
Parameters
event
The event object.
Returns
void
Overrides
onSelecting()
onSelecting(
_event):void
Defined in: src/core/Script.ts:104
Called whenever pinch / mouse click is happening, globally.
Parameters
_event
Returns
void
Inherited from
onSelectStart()
onSelectStart(
event):void
Defined in: src/core/User.ts:294
Handles the select start event for a controller.
Parameters
event
The event object.
Returns
void
Overrides
onSimulatorStarted()
onSimulatorStarted():
void
Defined in: src/core/Script.ts:79
Returns
void
Inherited from
onSqueeze()
onSqueeze(
_event):void
Defined in: src/core/Script.ts:133
Called whenever gamepad trigger successfully completes, globally.
Parameters
_event
event.target holds its controller.
Returns
void
Inherited from
onSqueezeEnd()
onSqueezeEnd(
_event):void
Defined in: src/core/User.ts:352
Handles the squeeze end event for a controller.
Parameters
_event
The event object.
Returns
void
Overrides
onSqueezeStart()
onSqueezeStart(
_event):void
Defined in: src/core/User.ts:346
Handles the squeeze start event for a controller.
Parameters
_event
The event object.
Returns
void
Overrides
onSqueezing()
onSqueezing(
_event):void
Defined in: src/core/Script.ts:127
Called whenever gamepad is being triggered, globally.
Parameters
_event
Returns
void
Inherited from
onXRSessionEnded()
onXRSessionEnded():
void
Defined in: src/core/Script.ts:77
Returns
void
Inherited from
onXRSessionStarted()
onXRSessionStarted(
_session?):void
Defined in: src/core/Script.ts:76
Parameters
_session?
Returns
void
Inherited from
physicsStep()
physicsStep():
void
Defined in: src/core/Script.ts:74
Returns
void
Inherited from
select()
select(
obj,controller):null|Intersection<Object3D<Object3DEventMap>>
Defined in: src/core/User.ts:666
Checks if a controller is selecting a specific object. Returns the intersection details if true.
Parameters
obj
The object to check for selection.
controller
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
Returns
void
update()
update():
void
Defined in: src/core/User.ts:358
The main update loop called each frame. Updates hover state for all controllers.
Returns
void
Overrides
updateForController()
updateForController(
controller):void
Defined in: src/core/User.ts:490
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:373
Checks for and handles grab events (touching + pinching).
Returns
void
updateTouchState()
updateTouchState():
void
Defined in: src/core/User.ts:427
Checks for and handles touch events for the hands' index fingers.
Returns
void