Morgan Villedieu 6 years ago
parent
commit
9d1cc7cae3
1 changed files with 123 additions and 138 deletions
  1. 123 138
      examples/js/vr/HelioWebXRPolyfill.js

+ 123 - 138
examples/js/vr/HelioWebXRPolyfill.js

@@ -2,147 +2,132 @@
  * @author mvilledieu / http://github.com/mvilledieu
  */
 
-if (/(Helio)/g.test(navigator.userAgent) && 'xr' in navigator) {
+if (/(Helio)/g.test(navigator.userAgent) && "xr" in navigator) {
+  console.log("Helio WebXR Polyfill", navigator.xr);
 
-	console.log('Helio WebXR Polyfill', navigator.xr);
+  // WebXRManager - XR.supportSession() Polyfill - WebVR.js line 147
 
-	// WebXRManager - XR.supportSession() Polyfill - WebVR.js line 147
+  if (
+    "supportsSession" in navigator.xr === false &&
+    "supportsSessionMode" in navigator.xr
+  ) {
+    navigator.xr.supportsSession = navigator.xr.supportsSessionMode;
+  }
 
-	if ('supportsSession' in navigator.xr === false && 'supportsSessionMode' in navigator.xr) {
+  if ("requestSession" in navigator.xr) {
+    const tempRequestSession = navigator.xr.requestSession.bind(navigator.xr);
 
-		navigator.xr.supportsSession = navigator.xr.supportsSessionMode;
-
-	}
-
-	if ('requestSession' in navigator.xr) {
-
-		const tempRequestSession = navigator.xr.requestSession.bind(navigator.xr);
-
-		navigator.xr.requestSession = function (sessionType) {
-
-			return new Promise((resolve, reject) => {
-				tempRequestSession({
-						mode: sessionType
-					})
-					.then(function (session) {
-
-						// WebXRManager - xrFrame.getPose() Polyfill - line 279
-
-						const tempRequestAnimationFrame = session.requestAnimationFrame.bind(session);
-
-						session.requestAnimationFrame = function (callback) {
-
-							return tempRequestAnimationFrame(function (time, frame) {
-
-								// WebXRManager - xrFrame.getViewerPose() Polyfill - line 279
-								// Transforms view.viewMatrix to view.transform.inverse.matrix
-
-								const tempGetViewerPose = frame.getViewerPose.bind(frame);
-
-								frame.getViewerPose = function (referenceSpace) {
-
-									const pose = tempGetViewerPose(referenceSpace);
-
-									pose.views.forEach(function (view) {
-
-										view.transform = {
-											inverse: {
-												matrix: view.viewMatrix
-											}
-										}
-
-									})
-
-									return pose;
-
-								}
-
-								// WebXRManager - xrFrame.getPose() Polyfill - line 259
-
-								frame.getPose = function (targetRaySpace, referenceSpace) {
-
-									const inputPose = frame.getInputPose(targetRaySpace, referenceSpace);
-
-									inputPose.transform = {
-										matrix: inputPose.targetRay.transformMatrix
-									}
-
-									return inputPose;
-
-								}
-
-								callback(time, frame)
-
-							})
-
-						}
-
-						// WebXRManager - xrFrame.getPose( inputSource.targetRaySpace, referenceSpace) Polyfill - line 279
-
-						const tempGetInputSources = session.getInputSources.bind(session);
-
-						session.getInputSources = function () {
-
-							const res = tempGetInputSources();
-
-							res.forEach(xrInputSource => {
-
-								Object.defineProperty(xrInputSource, 'targetRaySpace', {
-									get: function () {
-										return xrInputSource
-									},
-								})
-
-							})
-
-							return res;
-						}
-
-						// WebXRManager - xrSession.getInputSources() Polyfill Line 132 - 136
-
-						session.inputSources = Object.defineProperty(session, 'inputSources', {
-							get: session.getInputSources
-						});
-
-						// WebXRManager - xrSession.updateRenderState() Polyfill Line 129
-
-						session.updateRenderState = function ({
-							baseLayer
-						}) {
-
-							session.baseLayer = baseLayer;
-
-							// WebXRManager - xrSession.renderState.baseLayer Polyfill Line 219
-
-							session.renderState = {
-								baseLayer: baseLayer,
-							}
-
-						}
-
-						// WebXRManager - xrSession.requestReferenceSpace() Polyfill Line 130
-
-						const tempRequestReferenceSpace = session.requestReferenceSpace.bind(session);
-
-						session.requestReferenceSpace = function () {
-
-							return tempRequestReferenceSpace({
-								type: 'stationary',
-								subtype: 'floor-level'
-							})
-
-						}
-
-						resolve(session);
-
-					})
-					.catch(function (error) {
-						return reject(error);
-					})
-			})
-
-		}
-
-	}
+    navigator.xr.requestSession = function(sessionType) {
+      return new Promise((resolve, reject) => {
+        tempRequestSession({
+          mode: sessionType
+        })
+          .then(function(session) {
+            // WebXRManager - xrFrame.getPose() Polyfill - line 279
 
+            const tempRequestAnimationFrame = session.requestAnimationFrame.bind(
+              session
+            );
+
+            session.requestAnimationFrame = function(callback) {
+              return tempRequestAnimationFrame(function(time, frame) {
+                // WebXRManager - xrFrame.getViewerPose() Polyfill - line 279
+                // Transforms view.viewMatrix to view.transform.inverse.matrix
+
+                const tempGetViewerPose = frame.getViewerPose.bind(frame);
+
+                frame.getViewerPose = function(referenceSpace) {
+                  const pose = tempGetViewerPose(referenceSpace);
+
+                  pose.views.forEach(function(view) {
+                    view.transform = {
+                      inverse: {
+                        matrix: view.viewMatrix
+                      }
+                    };
+                  });
+
+                  return pose;
+                };
+
+                // WebXRManager - xrFrame.getPose() Polyfill - line 259
+
+                frame.getPose = function(targetRaySpace, referenceSpace) {
+                  const inputPose = frame.getInputPose(
+                    targetRaySpace,
+                    referenceSpace
+                  );
+
+                  inputPose.transform = {
+                    matrix: inputPose.targetRay.transformMatrix
+                  };
+
+                  return inputPose;
+                };
+
+                callback(time, frame);
+              });
+            };
+
+            // WebXRManager - xrFrame.getPose( inputSource.targetRaySpace, referenceSpace) Polyfill - line 279
+
+            const tempGetInputSources = session.getInputSources.bind(session);
+
+            session.getInputSources = function() {
+              const res = tempGetInputSources();
+
+              res.forEach(xrInputSource => {
+                Object.defineProperty(xrInputSource, "targetRaySpace", {
+                  get: function() {
+                    return xrInputSource;
+                  }
+                });
+              });
+
+              return res;
+            };
+
+            // WebXRManager - xrSession.getInputSources() Polyfill Line 132 - 136
+
+            session.inputSources = Object.defineProperty(
+              session,
+              "inputSources",
+              {
+                get: session.getInputSources
+              }
+            );
+
+            // WebXRManager - xrSession.updateRenderState() Polyfill Line 129
+
+            session.updateRenderState = function({ baseLayer }) {
+              session.baseLayer = baseLayer;
+
+              // WebXRManager - xrSession.renderState.baseLayer Polyfill Line 219
+
+              session.renderState = {
+                baseLayer: baseLayer
+              };
+            };
+
+            // WebXRManager - xrSession.requestReferenceSpace() Polyfill Line 130
+
+            const tempRequestReferenceSpace = session.requestReferenceSpace.bind(
+              session
+            );
+
+            session.requestReferenceSpace = function() {
+              return tempRequestReferenceSpace({
+                type: "stationary",
+                subtype: "floor-level"
+              });
+            };
+
+            resolve(session);
+          })
+          .catch(function(error) {
+            return reject(error);
+          });
+      });
+    };
+  }
 }