|
@@ -55,7 +55,7 @@ interface XRInputSource {
|
|
profiles: Array<string>;
|
|
profiles: Array<string>;
|
|
}
|
|
}
|
|
|
|
|
|
-interface XRSession {
|
|
|
|
|
|
+interface XRSession extends XRAnchorCreator {
|
|
addEventListener: Function;
|
|
addEventListener: Function;
|
|
removeEventListener: Function;
|
|
removeEventListener: Function;
|
|
requestReferenceSpace(type: XRReferenceSpaceType): Promise<XRReferenceSpace>;
|
|
requestReferenceSpace(type: XRReferenceSpaceType): Promise<XRReferenceSpace>;
|
|
@@ -67,6 +67,10 @@ interface XRSession {
|
|
|
|
|
|
// AR hit test
|
|
// AR hit test
|
|
requestHitTest(ray: XRRay, referenceSpace: XRReferenceSpace): Promise<XRHitResult[]>;
|
|
requestHitTest(ray: XRRay, referenceSpace: XRReferenceSpace): Promise<XRHitResult[]>;
|
|
|
|
+
|
|
|
|
+ updateWorldTrackingState(options: {
|
|
|
|
+ planeDetectionState?: { enabled: boolean }
|
|
|
|
+ })
|
|
}
|
|
}
|
|
|
|
|
|
interface XRReferenceSpace extends XRSpace {
|
|
interface XRReferenceSpace extends XRSpace {
|
|
@@ -74,10 +78,20 @@ interface XRReferenceSpace extends XRSpace {
|
|
onreset: any;
|
|
onreset: any;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+type XRPlaneSet = Set<XRPlane>;
|
|
|
|
+type XRAnchorSet = Set<XRAnchor>;
|
|
|
|
+
|
|
interface XRFrame {
|
|
interface XRFrame {
|
|
session: XRSession;
|
|
session: XRSession;
|
|
getViewerPose(referenceSpace: XRReferenceSpace): XRViewerPose | undefined;
|
|
getViewerPose(referenceSpace: XRReferenceSpace): XRViewerPose | undefined;
|
|
getPose(space: XRSpace, baseSpace: XRSpace): XRPose | undefined;
|
|
getPose(space: XRSpace, baseSpace: XRSpace): XRPose | undefined;
|
|
|
|
+
|
|
|
|
+ // Anchors
|
|
|
|
+ trackedAnchors?: XRAnchorSet;
|
|
|
|
+ // Planes
|
|
|
|
+ worldInformation: {
|
|
|
|
+ detectedPlanes?: XRPlaneSet;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
interface XRViewerPose extends XRPose {
|
|
interface XRViewerPose extends XRPose {
|
|
@@ -90,12 +104,12 @@ interface XRPose {
|
|
}
|
|
}
|
|
|
|
|
|
interface XRWebGLLayerOptions {
|
|
interface XRWebGLLayerOptions {
|
|
- antialias ?: boolean;
|
|
|
|
- depth ?: boolean;
|
|
|
|
- stencil ?: boolean;
|
|
|
|
- alpha ?: boolean;
|
|
|
|
- multiview ?: boolean;
|
|
|
|
- framebufferScaleFactor ?: number;
|
|
|
|
|
|
+ antialias?: boolean;
|
|
|
|
+ depth?: boolean;
|
|
|
|
+ stencil?: boolean;
|
|
|
|
+ alpha?: boolean;
|
|
|
|
+ multiview?: boolean;
|
|
|
|
+ framebufferScaleFactor?: number;
|
|
}
|
|
}
|
|
|
|
|
|
declare var XRWebGLLayer: {
|
|
declare var XRWebGLLayer: {
|
|
@@ -109,7 +123,8 @@ interface XRWebGLLayer {
|
|
getViewport: Function;
|
|
getViewport: Function;
|
|
}
|
|
}
|
|
|
|
|
|
-interface XRRigidTransform {
|
|
|
|
|
|
+class XRRigidTransform {
|
|
|
|
+ constructor(matrix: Float32Array): XRRigidTransform;
|
|
position: DOMPointReadOnly;
|
|
position: DOMPointReadOnly;
|
|
orientation: DOMPointReadOnly;
|
|
orientation: DOMPointReadOnly;
|
|
matrix: Float32Array;
|
|
matrix: Float32Array;
|
|
@@ -135,7 +150,7 @@ interface XRInputSourceEvent extends Event {
|
|
|
|
|
|
// Experimental(er) features
|
|
// Experimental(er) features
|
|
class XRRay {
|
|
class XRRay {
|
|
- constructor (transformOrOrigin: XRRigidTransform | DOMPointReadOnly, direction?: DOMPointReadOnly): XRRay;
|
|
|
|
|
|
+ constructor(transformOrOrigin: XRRigidTransform | DOMPointReadOnly, direction?: DOMPointReadOnly): XRRay;
|
|
origin: DOMPointReadOnly;
|
|
origin: DOMPointReadOnly;
|
|
direction: DOMPointReadOnly;
|
|
direction: DOMPointReadOnly;
|
|
matrix: Float32Array;
|
|
matrix: Float32Array;
|
|
@@ -143,4 +158,25 @@ class XRRay {
|
|
|
|
|
|
interface XRHitResult {
|
|
interface XRHitResult {
|
|
hitMatrix: Float32Array;
|
|
hitMatrix: Float32Array;
|
|
|
|
+ plane?: XRPlane;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+interface XRAnchor {
|
|
|
|
+ // remove?
|
|
|
|
+ id?: string;
|
|
|
|
+ anchorSpace: XRSpace;
|
|
|
|
+ lastChangedTime: number;
|
|
|
|
+ detach(): void;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+interface XRPlane extends XRAnchorCreator {
|
|
|
|
+ orientation: "Horizontal" | "Vertical";
|
|
|
|
+ planeSpace: XRSpace;
|
|
|
|
+ polygon: Array<DOMPointReadOnly>;
|
|
|
|
+ lastChangedTime: number;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+interface XRAnchorCreator {
|
|
|
|
+ // AR Anchors
|
|
|
|
+ createAnchor(pose: XRPose | XRRigidTransform, referenceSpace: XRReferenceSpace): Promise<XRAnchor>;
|
|
}
|
|
}
|