/** * Copyright (c) 2025-2026 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose */ import { BehaviorSubject, Subject } from 'rxjs'; import { WebGLContext } from '../../mol-gl/webgl/context.js'; import { Camera } from '../camera.js'; import { PointerHelper } from './pointer-helper.js'; import { InputObserver } from '../../mol-util/input/input-observer.js'; import { StereoCamera } from '../camera/stereo.js'; import { Scene } from '../../mol-gl/scene.js'; import { Canvas3dInteractionHelper } from './interaction-events.js'; import { ParamDefinition as PD } from '../../mol-util/param-definition.js'; import { Binding } from '../../mol-util/binding.js'; export declare const DefaultXRManagerBindings: { exit: Binding; togglePassthrough: Binding; gestureScale: Binding; }; export declare const DefaultXRManagerAttribs: { bindings: { exit: Binding; togglePassthrough: Binding; gestureScale: Binding; }; }; export type XRManagerAttribs = typeof DefaultXRManagerAttribs; export declare const XRManagerParams: { minTargetDistance: PD.Numeric; disablePostprocessing: PD.BooleanParam; resolutionScale: PD.Numeric; sceneRadiusInMeters: PD.Numeric; }; export type XRManagerParams = typeof XRManagerParams; export type XRManagerProps = PD.Values; export declare class XRManager { private webgl; private input; private scene; private camera; private stereoCamera; private pointerHelper; private interactionHelper; private hoverSub; private keyUpSub; private gestureSub; private sessionChangedSub; readonly togglePassthrough: Subject; readonly sessionChanged: Subject; readonly isSupported: BehaviorSubject; private xrSession; get session(): XRSession | undefined; private xrRefSpace; private scaleFactor; private prevScale; private prevInput; private hit; readonly props: XRManagerProps; readonly attribs: XRManagerAttribs; setProps(props: Partial): void; setAttribs(attribs: Partial): void; private intersect; setScaleFactor(factor: number): void; resetScale(): void; update(xrFrame?: XRFrame): boolean; private setSession; end(): Promise; private checkSupported; /** * This may fail due to permissions policy, device capabilities, etc. * Always wrap calls to it in a try/catch block to handle errors. */ request(): Promise; dispose(): void; constructor(webgl: WebGLContext, input: InputObserver, scene: Scene, camera: Camera, stereoCamera: StereoCamera, pointerHelper: PointerHelper, interactionHelper: Canvas3dInteractionHelper, props?: Partial, attribs?: Partial); }