/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import { Vector3 } from 'three'; import { TransformHandles } from '@pmndrs/handle'; import { XRDevice } from 'iwer'; export declare const PRIVATE: unique symbol; type Handedness = 'left' | 'right'; export interface PoseTransform { position: [number, number, number]; quaternion: [number, number, number, number]; } export interface DefaultPose { headset: PoseTransform; controllers?: Partial>; hands?: Partial>; } export declare class InputLayer { private xrDevice; transformHandles: Map; combinedCameraPosition: Vector3; private renderer; private scene; private camera; private playerRig; private cameraRig; private isPointerLocked; private vec3; private quat; private quatB; private quatInv; private quatMouse; private euler; private mouseMoveHandler; private pointerLockChangeHandlerBound; private keyDownHandlerBound; private keyUpHandlerBound; private headsetDefaultPosition; private headsetDefaultQuaternion; private keyState; private forwardHtmlEvents; private lastTime; /** * Whether the device is in programmatic control mode. * When true, this layer won't sync TO the device (device controls us instead). */ isInProgrammaticMode: boolean; /** * Whether user interactions (pointer lock, mouse movement) are enabled. */ private interactionsEnabled; constructor(xrDevice: XRDevice); lockPointer(): void; pointerLockChangeHandler(): void; keyDownHandler(event: KeyboardEvent): void; keyUpHandler(event: KeyboardEvent): void; movePlayerRig(delta: number): void; resetDeviceTransforms(): void; captureDefaultPose(): DefaultPose; applyDefaultPose(defaultPose: DefaultPose): void; syncDeviceTransforms(): void; /** * Sync DevUI's local transforms FROM the device's global transforms. * This is the reverse of syncDeviceTransforms() - used when device * is controlled programmatically and we need to follow its state. */ syncFromDevice(): void; /** * Enable or disable user interactions (pointer lock, keyboard controls). * When disabled, the DevUI still renders but doesn't respond to user input. */ setInteractionsEnabled(enabled: boolean): void; renderScene(time: number): void; get domElement(): HTMLCanvasElement; dispose(): void; } export {}; //# sourceMappingURL=scene.d.ts.map