Skip to content
Prev Previous commit
Next Next commit
Address review comments
  • Loading branch information
cabanier committed Dec 12, 2023
commit a03d112296355a2b60e03c6159bd32398cd912a5
8 changes: 6 additions & 2 deletions src/core/scene/a-scene.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class AScene extends AEntity {
self.systems = {};
self.systemNames = [];
self.time = self.delta = 0;
self.usedOfferSession = false;

self.behaviors = {tick: [], tock: []};
self.hasLoaded = false;
Expand Down Expand Up @@ -270,14 +271,15 @@ class AScene extends AEntity {
* @param {bool?} useAR - if true, try immersive-ar mode
* @returns {Promise}
*/
enterVR (useAR, useOfferSession = false) {
enterVR (useAR, useOfferSession) {
var self = this;
var vrDisplay;
var vrManager = self.renderer.xr;
var xrInit;

// Don't enter VR if already in VR.
if (navigator.xr.offerSession === undefined) { return Promise.resolve('OfferSession is not supported.'); }
if (useOfferSession && navigator.xr.offerSession === undefined) { return Promise.resolve('OfferSession is not supported.'); }
if (self.usedOfferSession) { return Promise.resolve('OfferSession was already called.'); }
if (this.is('vr-mode')) { return Promise.resolve('Already in VR.'); }

// Has VR.
Expand All @@ -296,9 +298,11 @@ class AScene extends AEntity {
xrInit = this.sceneEl.systems.webxr.sessionConfiguration;
return new Promise(function (resolve, reject) {
var requestFunction = useOfferSession ? navigator.xr.offerSession.bind(navigator.xr) : navigator.xr.requestSession.bind(navigator.xr);
self.usedOfferSession |= useOfferSession;
requestFunction(xrMode, xrInit).then(
function requestSuccess (xrSession) {
self.xrSession = xrSession;
self.usedOfferSession = false;

vrManager.layersEnabled = xrInit.requiredFeatures.indexOf('layers') !== -1;
vrManager.setSession(xrSession).then(function () {
Expand Down