Class: UX
Defined in: src/ux/UX.ts:10
UX manages the user experience (UX) state for an interactive object in the scene. It tracks interaction states like hover, selection, and dragging for multiple controllers.
Constructors
Constructor
new UX(
parent
):UX
Defined in: src/ux/UX.ts:94
Parameters
parent
The script or object that owns this UX instance.
Returns
UX
Properties
activeDragged
activeDragged:
boolean
[] =[]
Defined in: src/ux/UX.ts:55
An array tracking the drag state for each controller.
distances
distances:
number
[] =[]
Defined in: src/ux/UX.ts:69
An array storing the distance of the last intersection for each controller.
draggable
draggable:
boolean
=false
Defined in: src/ux/UX.ts:19
Indicates if the parent object can be dragged.
hovered
hovered:
boolean
[] =[]
Defined in: src/ux/UX.ts:44
An array tracking the hover state for each controller.
hovered[i]
is true if controller i
is hovering over the object.
initialDistance?
optional
initialDistance:number
Defined in: src/ux/UX.ts:89
The initial distance from the controller to the object at the start of a drag for computing the relative dragging distances and angles.
initialPosition
initialPosition:
Vector3
Defined in: src/ux/UX.ts:83
The initial position of the object when a drag operation begins.
parent
parent:
Object3D
<Object3DEventMap
>
Defined in: src/ux/UX.ts:14
The object this UX state manager is attached to.
positions
positions:
Vector3
[] =[]
Defined in: src/ux/UX.ts:64
An array storing the 3D position of the last intersection for each controller.
selectable
selectable:
boolean
=false
Defined in: src/ux/UX.ts:24
Indicates if the parent object can be selected.
selected
selected:
boolean
[] =[]
Defined in: src/ux/UX.ts:38
An array tracking the selection state for each controller.
selected[i]
is true if controller i
is selecting the object.
touchable
touchable:
boolean
=false
Defined in: src/ux/UX.ts:29
Indicates if the parent object can be touched.
touched
touched:
boolean
[] =[]
Defined in: src/ux/UX.ts:50
An array tracking the touch state for each controller.
touched[i]
is true if controller i
is touching over the object.
uvs
uvs:
Vector2
[] =[]
Defined in: src/ux/UX.ts:75
An array storing the UV coordinates of the last intersection for each controller.
Methods
getPrimaryTwoControllerIds()
getPrimaryTwoControllerIds():
number
[]
Defined in: src/ux/UX.ts:184
Gets the IDs of up to two controllers that are currently hovering over the parent object, always returning a two-element array. This is useful for shaders or components like Panels that expect a fixed number of interaction points.
Returns
number
[]
A fixed-size two-element array. Each element is either a controller ID (e.g., 0, 1) or null.
initializeVariablesForId()
initializeVariablesForId(
id
):void
Defined in: src/ux/UX.ts:152
Ensures that the internal arrays for tracking states are large enough to accommodate a given controller ID.
Parameters
id
number
The controller ID to ensure exists.
Returns
void
isDragging()
isDragging():
boolean
Defined in: src/ux/UX.ts:115
Checks if the object is currently being dragged by any controller.
Returns
boolean
isHovered()
isHovered():
boolean
Defined in: src/ux/UX.ts:101
Checks if the object is currently being hovered by any controller.
Returns
boolean
isSelected()
isSelected():
boolean
Defined in: src/ux/UX.ts:108
Checks if the object is currently being selected by any controller.
Returns
boolean
reset()
reset():
void
Defined in: src/ux/UX.ts:167
Resets the hover and selection states for all controllers. This is typically called at the beginning of each frame.
Returns
void
update()
update(
controller
,intersection
):void
Defined in: src/ux/UX.ts:127
Updates the interaction state for a specific controller based on a new intersection. This is internally called by the core input system when a raycast hits the parent object.
Parameters
controller
The controller performing the interaction.
intersection
Intersection
The raycast intersection data.
Returns
void