diff --git a/types/three/test/webvr/webvr.ts b/types/three/test/webvr/webvr.ts new file mode 100644 index 0000000000..e831e493ee --- /dev/null +++ b/types/three/test/webvr/webvr.ts @@ -0,0 +1,13 @@ +// WebVRManager support + +() => { + const renderer = new THREE.WebGLRenderer(); + renderer.vr.enabled = true; + const camera = new THREE.PerspectiveCamera(); + const vrCamera = renderer.vr.getCamera(camera); + const display: VRDisplay = renderer.vr.getDevice(); + renderer.vr.setDevice(display); + const obj = new THREE.Object3D(); + renderer.vr.setPoseTarget(obj); + renderer.vr.dispose(); +} diff --git a/types/three/three-core.d.ts b/types/three/three-core.d.ts index 06bb1e02d0..a2c4b05544 100644 --- a/types/three/three-core.d.ts +++ b/types/three/three-core.d.ts @@ -656,6 +656,13 @@ export class StereoCamera extends Camera { update(camera: PerspectiveCamera): void; } +export class ArrayCamera extends PerspectiveCamera { + constructor(cameras?: PerspectiveCamera[]); + + cameras: PerspectiveCamera[]; + isArrayCamera: true; +} + // Core /////////////////////////////////////////////////////////////////////////////////////////////// /** @@ -5134,6 +5141,8 @@ export class WebGLRenderer implements Renderer { state: WebGLState; allocTextureUnit: any; + vr: WebVRManager; + /** * Return the WebGL context. */ @@ -7077,3 +7086,13 @@ export class MorphBlendMesh extends Mesh { stopAnimation(name: string): void; update(delta: number): void; } + +export interface WebVRManager { + enabled: boolean; + getDevice(): VRDisplay | null; + setDevice(device: VRDisplay | null): void; + setPoseTarget(object: Object3D | null): void; + getCamera(camera: PerspectiveCamera): PerspectiveCamera | ArrayCamera; + submitFrame(): void; + dispose(): void; +} diff --git a/types/three/tsconfig.json b/types/three/tsconfig.json index 1e615b65b1..4faf2d0b0c 100644 --- a/types/three/tsconfig.json +++ b/types/three/tsconfig.json @@ -54,6 +54,7 @@ "test/examples/controls/vrcontrols.ts", "test/examples/ctm/ctmloader.ts", "test/examples/octree.ts", - "test/examples/loaders/webgl_loader_obj_mtl.ts" + "test/examples/loaders/webgl_loader_obj_mtl.ts", + "test/webvr/webvr.ts" ] -} \ No newline at end of file +}