Class: InputSystem
Defined in: packages/core/src/input/input-system.ts:48
Samples XR poses (hands/controllers/head) and gamepads, curates the set of interactables for pointer raycasting, and attaches minimal event listeners.
Remarks
- Scheduled after player movement so pointers reflect updated transforms.
- Maintains type-specific descendant arrays for optimized pointer intersection.
- Adds transient
Hovered/Pressedtags so other systems can react declaratively.
Example
export class HighlightSystem extends createSystem({
items: { required: [RayInteractable] }
}) {
update() {
this.queries.items.entities.forEach(e => {
e.object3D.visible = !e.hasComponent(Pressed);
})
}
}Extends
System<{maintainScenePointers: {default:false;type:Boolean; }; }, {distanceGrabbables: {required: (Component<{orientation: {default: [number,number,number,number];type:Vec4; };parent: {default:any;type:Entity; };position: {default: [number,number,number];type:Vec3; };scale: {default: [number,number,number];type:Vec3; }; }> |Component<{detachOnGrab: {default:false;type:Boolean; };movementMode: {default:string;enum: {MoveAtSource:string;MoveFromTarget:string;MoveTowardsTarget:string;RotateAtSource:string; };type:Enum; };moveSpeedFactor: {default:number;type:Float32; };returnToOrigin: {default:false;type:Boolean; };rotate: {default:true;type:Boolean; };rotateMax: {default: [number,number,number];type:Vec3; };rotateMin: {default: [number,number,number];type:Vec3; };scale: {default:true;type:Boolean; };scaleMax: {default: [number,number,number];type:Vec3; };scaleMin: {default: [number,number,number];type:Vec3; };targetPositionOffset: {default: [number,number,number];type:Vec3; };targetQuaternionOffset: {default: [number,number,number,number];type:Vec4; };translate: {default:true;type:Boolean; };translateMax: {default: [number,number,number];type:Vec3; };translateMin: {default: [number,number,number];type:Vec3; }; }>)[]; };oneHandGrabbables: {required: (Component<{orientation: {default: [number,number,number,number];type:Vec4; };parent: {default:any;type:Entity; };position: {default: [number,number,number];type:Vec3; };scale: {default: [number,number,number];type:Vec3; }; }> |Component<{rotate: {default:true;type:Boolean; };rotateMax: {default: [number,number,number];type:Vec3; };rotateMin: {default: [number,number,number];type:Vec3; };translate: {default:true;type:Boolean; };translateMax: {default: [number,number,number];type:Vec3; };translateMin: {default: [number,number,number];type:Vec3; }; }>)[]; };pokeInteractables: {required:Component<{ }>[]; };rayInteractables: {required:Component<{ }>[]; };twoHandsGrabbables: {required: (Component<{orientation: {default: [number,number,number,number];type:Vec4; };parent: {default:any;type:Entity; };position: {default: [number,number,number];type:Vec3; };scale: {default: [number,number,number];type:Vec3; }; }> |Component<{rotate: {default:true;type:Boolean; };rotateMax: {default: [number,number,number];type:Vec3; };rotateMin: {default: [number,number,number];type:Vec3; };scale: {default:true;type:Boolean; };scaleMax: {default: [number,number,number];type:Vec3; };scaleMin: {default: [number,number,number];type:Vec3; };translate: {default:true;type:Boolean; };translateMax: {default: [number,number,number];type:Vec3; };translateMin: {default: [number,number,number];type:Vec3; }; }>)[]; }; },this>
Constructors
Constructor
new InputSystem(
_w,_qm,_p):InputSystem
Defined in: node_modules/.pnpm/elics@3.4.2/node_modules/elics/lib/system.d.ts:76
Parameters
_w
_qm
QueryManager
_p
number
Returns
InputSystem
Inherited from
createSystem( { /** Entities interactable via ray pointer */ rayInteractables: { required: [RayInteractable, Transform] }, /** Entities interactable via touch/poke pointer */ pokeInteractables: { required: [PokeInteractable, Transform] }, /** One-hand grabbable entities */ oneHandGrabbables: { required: [OneHandGrabbable, Transform] }, /** Two-hands grabbable entities */ twoHandsGrabbables: { required: [TwoHandsGrabbable, Transform] }, /** Distance grabbable entities */ distanceGrabbables: { required: [DistanceGrabbable, Transform] }, }, { /** Keep pointer target lists available outside immersive XR for browser canvas input. */ maintainScenePointers: { type: Types.Boolean, default: false }, }, ).constructor
Properties
camera
readonlycamera:PerspectiveCamera
Defined in: packages/core/src/ecs/system.ts:63
Inherited from
cleanupFuncs
readonlycleanupFuncs: () =>void[]
Defined in: packages/core/src/ecs/system.ts:66
Returns
void
Inherited from
config
config:
SystemConfigSignals<S>
Defined in: packages/core/src/ecs/system.ts:49
Inherited from
createEntity()
createEntity: () =>
Entity
Defined in: packages/core/src/ecs/system.ts:81
Returns
Entity
Inherited from
globals
globals:
Record<string,any>
Defined in: packages/core/src/ecs/system.ts:54
Inherited from
input
readonlyinput:InputManager
Defined in: packages/core/src/ecs/system.ts:61
Inherited from
isPaused
isPaused:
boolean
Defined in: packages/core/src/ecs/system.ts:48
Inherited from
player
readonlyplayer:XROrigin
Defined in: packages/core/src/ecs/system.ts:58
Inherited from
playerEntity
readonlyplayerEntity:Entity
Defined in: packages/core/src/ecs/system.ts:59
Inherited from
playerHeadEntity
readonlyplayerHeadEntity:Entity
Defined in: packages/core/src/ecs/system.ts:60
Inherited from
priority
priority:
number
Defined in: packages/core/src/ecs/system.ts:53
Inherited from
queries
queries:
Record<keyofQ,Query>
Defined in: packages/core/src/ecs/system.ts:50
Inherited from
queryManager
queryManager:
QueryManager
Defined in: packages/core/src/ecs/system.ts:52
Inherited from
renderer
readonlyrenderer:WebGLRenderer
Defined in: packages/core/src/ecs/system.ts:64
Inherited from
scene
readonlyscene:Scene
Defined in: packages/core/src/ecs/system.ts:62
Inherited from
visibilityState
readonlyvisibilityState:Signal<VisibilityState>
Defined in: packages/core/src/ecs/system.ts:65
Inherited from
world
world:
World
Defined in: packages/core/src/ecs/system.ts:51
Inherited from
xrFrame
xrFrame:
XRFrame
Defined in: packages/core/src/ecs/system.ts:56
Inherited from
xrManager
xrManager:
WebXRManager
Defined in: packages/core/src/ecs/system.ts:55
Inherited from
Methods
init()
init():
void
Defined in: packages/core/src/input/input-system.ts:85
Returns
void
Overrides
play()
play():
void
Defined in: packages/core/src/ecs/system.ts:79
Returns
void
Inherited from
stop()
stop():
void
Defined in: packages/core/src/ecs/system.ts:80
Returns
void
Inherited from
update()
update(
delta,time):void
Defined in: packages/core/src/input/input-system.ts:133
Per-frame tick. Both arguments are in seconds (Three.js Clock convention), not milliseconds.
Parameters
delta
number
Seconds since the previous frame.
time
number
Accumulated Clock.elapsedTime (seconds since the render loop started ticking the clock); monotonic across frames within a session.
Returns
void