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?
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
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
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
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
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
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
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
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
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
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
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
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:72
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:157
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:162
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:167
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:109
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:110
Parameters
_event
Returns
void
Inherited from
onObjectGrabbing()
onObjectGrabbing(
_event
):void
Defined in: src/core/Script.ts:187
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:191
Called when a hand stops grabbing this object.
Parameters
_event
Returns
void
Inherited from
onObjectGrabStart()
onObjectGrabStart(
_event
):void
Defined in: src/core/Script.ts:183
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:150
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:141
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:179
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:175
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:171
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:98
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:320
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:103
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:78
Returns
void
Inherited from
onSqueeze()
onSqueeze(
_event
):void
Defined in: src/core/Script.ts:132
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:348
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:342
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:126
Called whenever gamepad is being triggered, globally.
Parameters
_event
Returns
void
Inherited from
onXRSessionEnded()
onXRSessionEnded():
void
Defined in: src/core/Script.ts:76
Returns
void
Inherited from
onXRSessionStarted()
onXRSessionStarted(
_session?
):void
Defined in: src/core/Script.ts:75
Parameters
_session?
Returns
void
Inherited from
physicsStep()
physicsStep():
void
Defined in: src/core/Script.ts:73
Returns
void
Inherited from
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
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:354
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: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