Skip to content

Commit aa67adb

Browse files
authored
Merge pull request #83 from De-Panther/remove_inline_session
Removed XR Inline Session
2 parents 032e17a + 037e02b commit aa67adb

File tree

3 files changed

+99
-75
lines changed

3 files changed

+99
-75
lines changed

Build/webxr.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122

123123
function XRManager() {
124124
this.xrSession = null;
125-
this.inlineSession = null;
126125
this.viewerSpace = null;
127126
this.viewerHitTestSource = null;
128127
this.xrData = new XRData();
@@ -185,6 +184,14 @@
185184

186185
XRManager.prototype.onRequestARSession = function () {
187186
if (!this.isARSupported) return;
187+
this.BrowserObject.pauseAsyncCallbacks();
188+
this.BrowserObject.mainLoop.pause();
189+
var thisXRMananger = this;
190+
var tempRender = function () {
191+
thisXRMananger.ctx.clearColor(0, 0, 0, 0);
192+
thisXRMananger.ctx.clear(thisXRMananger.ctx.COLOR_BUFFER_BIT | thisXRMananger.ctx.DEPTH_BUFFER_BIT);
193+
}
194+
window.requestAnimationFrame( tempRender );
188195
navigator.xr.requestSession('immersive-ar', {
189196
requiredFeatures: this.gameInstance.Module.WebXR.Settings.ARRequiredReferenceSpace,
190197
optionalFeatures: this.gameInstance.Module.WebXR.Settings.AROptionalFeatures
@@ -194,11 +201,22 @@
194201
session.isAR = true;
195202
this.xrSession = session;
196203
this.onSessionStarted(session);
204+
}).catch((error) => {
205+
this.BrowserObject.resumeAsyncCallbacks();
206+
this.BrowserObject.mainLoop.resume();
197207
});
198208
}
199209

200210
XRManager.prototype.onRequestVRSession = function () {
201211
if (!this.isVRSupported) return;
212+
this.BrowserObject.pauseAsyncCallbacks();
213+
this.BrowserObject.mainLoop.pause();
214+
var thisXRMananger = this;
215+
var tempRender = function () {
216+
thisXRMananger.ctx.clearColor(0, 0, 0, 0);
217+
thisXRMananger.ctx.clear(thisXRMananger.ctx.COLOR_BUFFER_BIT | thisXRMananger.ctx.DEPTH_BUFFER_BIT);
218+
}
219+
window.requestAnimationFrame( tempRender );
202220
navigator.xr.requestSession('immersive-vr', {
203221
requiredFeatures: this.gameInstance.Module.WebXR.Settings.VRRequiredReferenceSpace,
204222
optionalFeatures: this.gameInstance.Module.WebXR.Settings.VROptionalFeatures
@@ -208,6 +226,9 @@
208226
session.isAR = false;
209227
this.xrSession = session;
210228
this.onSessionStarted(session);
229+
}).catch((error) => {
230+
this.BrowserObject.resumeAsyncCallbacks();
231+
this.BrowserObject.mainLoop.resume();
211232
});
212233
}
213234

@@ -240,6 +261,15 @@
240261
this.didNotifyUnity = false;
241262
this.canvas.width = this.canvas.parentElement.clientWidth * window.devicePixelRatio;
242263
this.canvas.height = this.canvas.parentElement.clientHeight * window.devicePixelRatio;
264+
265+
this.BrowserObject.pauseAsyncCallbacks();
266+
this.BrowserObject.mainLoop.pause();
267+
this.ctx.bindFramebuffer(this.ctx.FRAMEBUFFER);
268+
var thisXRMananger = this;
269+
window.setTimeout(function () {
270+
thisXRMananger.BrowserObject.resumeAsyncCallbacks();
271+
thisXRMananger.BrowserObject.mainLoop.resume();
272+
});
243273
}
244274

245275
XRManager.prototype.onInputSourceEvent = function (xrInputSourceEvent) {
@@ -400,12 +430,6 @@
400430
thisXRMananger.animate(xrFrame);
401431
func(time);
402432
});
403-
} else if (thisXRMananger.inlineSession && thisXRMananger.inlineSession.isInSession) {
404-
return thisXRMananger.inlineSession.requestAnimationFrame((time, xrFrame) =>
405-
{
406-
thisXRMananger.animate(xrFrame);
407-
func(time);
408-
});
409433
} else {
410434
window.requestAnimationFrame(func);
411435
}
@@ -418,9 +442,6 @@
418442
if (thisXRMananger.xrSession.renderState.baseLayer) {
419443
fbo = thisXRMananger.xrSession.renderState.baseLayer.framebuffer;
420444
}
421-
} else if (thisXRMananger.inlineSession && thisXRMananger.inlineSession.isInSession &&
422-
thisXRMananger.inlineSession.renderState.baseLayer) {
423-
fbo = thisXRMananger.inlineSession.renderState.baseLayer.framebuffer;
424445
}
425446
}
426447
return oldBindFramebuffer.call(this, target, fbo);
@@ -439,16 +460,6 @@
439460
this.UpdateXRCapabilities();
440461

441462
this.onInputEvent = this.onInputSourceEvent.bind(this);
442-
443-
navigator.xr.isSessionSupported('inline').then((supported) => {
444-
if (supported) {
445-
navigator.xr.requestSession('inline').then((session) => {
446-
session.isInSession = true;
447-
this.inlineSession = session;
448-
this.onSessionStarted(session);
449-
});
450-
}
451-
});
452463
}
453464

454465
XRManager.prototype.UpdateXRCapabilities = function() {
@@ -669,11 +680,8 @@
669680

670681
session.requestReferenceSpace(refSpaceType).then((refSpace) => {
671682
session.refSpace = refSpace;
672-
if (session.isImmersive)
673-
{
674-
// Inform the session that we're ready to begin drawing.
675-
this.BrowserObject.requestAnimationFrame(this.BrowserObject.mainLoop.runner);
676-
}
683+
this.BrowserObject.resumeAsyncCallbacks();
684+
this.BrowserObject.mainLoop.resume();
677685
});
678686
}
679687

Packages/webxr/Hidden~/WebGLTemplates/WebXR/webxr.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122

123123
function XRManager() {
124124
this.xrSession = null;
125-
this.inlineSession = null;
126125
this.viewerSpace = null;
127126
this.viewerHitTestSource = null;
128127
this.xrData = new XRData();
@@ -185,6 +184,14 @@
185184

186185
XRManager.prototype.onRequestARSession = function () {
187186
if (!this.isARSupported) return;
187+
this.BrowserObject.pauseAsyncCallbacks();
188+
this.BrowserObject.mainLoop.pause();
189+
var thisXRMananger = this;
190+
var tempRender = function () {
191+
thisXRMananger.ctx.clearColor(0, 0, 0, 0);
192+
thisXRMananger.ctx.clear(thisXRMananger.ctx.COLOR_BUFFER_BIT | thisXRMananger.ctx.DEPTH_BUFFER_BIT);
193+
}
194+
window.requestAnimationFrame( tempRender );
188195
navigator.xr.requestSession('immersive-ar', {
189196
requiredFeatures: this.gameInstance.Module.WebXR.Settings.ARRequiredReferenceSpace,
190197
optionalFeatures: this.gameInstance.Module.WebXR.Settings.AROptionalFeatures
@@ -194,11 +201,22 @@
194201
session.isAR = true;
195202
this.xrSession = session;
196203
this.onSessionStarted(session);
204+
}).catch((error) => {
205+
this.BrowserObject.resumeAsyncCallbacks();
206+
this.BrowserObject.mainLoop.resume();
197207
});
198208
}
199209

200210
XRManager.prototype.onRequestVRSession = function () {
201211
if (!this.isVRSupported) return;
212+
this.BrowserObject.pauseAsyncCallbacks();
213+
this.BrowserObject.mainLoop.pause();
214+
var thisXRMananger = this;
215+
var tempRender = function () {
216+
thisXRMananger.ctx.clearColor(0, 0, 0, 0);
217+
thisXRMananger.ctx.clear(thisXRMananger.ctx.COLOR_BUFFER_BIT | thisXRMananger.ctx.DEPTH_BUFFER_BIT);
218+
}
219+
window.requestAnimationFrame( tempRender );
202220
navigator.xr.requestSession('immersive-vr', {
203221
requiredFeatures: this.gameInstance.Module.WebXR.Settings.VRRequiredReferenceSpace,
204222
optionalFeatures: this.gameInstance.Module.WebXR.Settings.VROptionalFeatures
@@ -208,6 +226,9 @@
208226
session.isAR = false;
209227
this.xrSession = session;
210228
this.onSessionStarted(session);
229+
}).catch((error) => {
230+
this.BrowserObject.resumeAsyncCallbacks();
231+
this.BrowserObject.mainLoop.resume();
211232
});
212233
}
213234

@@ -240,6 +261,15 @@
240261
this.didNotifyUnity = false;
241262
this.canvas.width = this.canvas.parentElement.clientWidth * window.devicePixelRatio;
242263
this.canvas.height = this.canvas.parentElement.clientHeight * window.devicePixelRatio;
264+
265+
this.BrowserObject.pauseAsyncCallbacks();
266+
this.BrowserObject.mainLoop.pause();
267+
this.ctx.bindFramebuffer(this.ctx.FRAMEBUFFER);
268+
var thisXRMananger = this;
269+
window.setTimeout(function () {
270+
thisXRMananger.BrowserObject.resumeAsyncCallbacks();
271+
thisXRMananger.BrowserObject.mainLoop.resume();
272+
});
243273
}
244274

245275
XRManager.prototype.onInputSourceEvent = function (xrInputSourceEvent) {
@@ -400,12 +430,6 @@
400430
thisXRMananger.animate(xrFrame);
401431
func(time);
402432
});
403-
} else if (thisXRMananger.inlineSession && thisXRMananger.inlineSession.isInSession) {
404-
return thisXRMananger.inlineSession.requestAnimationFrame((time, xrFrame) =>
405-
{
406-
thisXRMananger.animate(xrFrame);
407-
func(time);
408-
});
409433
} else {
410434
window.requestAnimationFrame(func);
411435
}
@@ -418,9 +442,6 @@
418442
if (thisXRMananger.xrSession.renderState.baseLayer) {
419443
fbo = thisXRMananger.xrSession.renderState.baseLayer.framebuffer;
420444
}
421-
} else if (thisXRMananger.inlineSession && thisXRMananger.inlineSession.isInSession &&
422-
thisXRMananger.inlineSession.renderState.baseLayer) {
423-
fbo = thisXRMananger.inlineSession.renderState.baseLayer.framebuffer;
424445
}
425446
}
426447
return oldBindFramebuffer.call(this, target, fbo);
@@ -439,16 +460,6 @@
439460
this.UpdateXRCapabilities();
440461

441462
this.onInputEvent = this.onInputSourceEvent.bind(this);
442-
443-
navigator.xr.isSessionSupported('inline').then((supported) => {
444-
if (supported) {
445-
navigator.xr.requestSession('inline').then((session) => {
446-
session.isInSession = true;
447-
this.inlineSession = session;
448-
this.onSessionStarted(session);
449-
});
450-
}
451-
});
452463
}
453464

454465
XRManager.prototype.UpdateXRCapabilities = function() {
@@ -669,11 +680,8 @@
669680

670681
session.requestReferenceSpace(refSpaceType).then((refSpace) => {
671682
session.refSpace = refSpace;
672-
if (session.isImmersive)
673-
{
674-
// Inform the session that we're ready to begin drawing.
675-
this.BrowserObject.requestAnimationFrame(this.BrowserObject.mainLoop.runner);
676-
}
683+
this.BrowserObject.resumeAsyncCallbacks();
684+
this.BrowserObject.mainLoop.resume();
677685
});
678686
}
679687

Packages/webxr/Hidden~/WebGLTemplates/WebXRFullView/webxr.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122

123123
function XRManager() {
124124
this.xrSession = null;
125-
this.inlineSession = null;
126125
this.viewerSpace = null;
127126
this.viewerHitTestSource = null;
128127
this.xrData = new XRData();
@@ -185,6 +184,14 @@
185184

186185
XRManager.prototype.onRequestARSession = function () {
187186
if (!this.isARSupported) return;
187+
this.BrowserObject.pauseAsyncCallbacks();
188+
this.BrowserObject.mainLoop.pause();
189+
var thisXRMananger = this;
190+
var tempRender = function () {
191+
thisXRMananger.ctx.clearColor(0, 0, 0, 0);
192+
thisXRMananger.ctx.clear(thisXRMananger.ctx.COLOR_BUFFER_BIT | thisXRMananger.ctx.DEPTH_BUFFER_BIT);
193+
}
194+
window.requestAnimationFrame( tempRender );
188195
navigator.xr.requestSession('immersive-ar', {
189196
requiredFeatures: this.gameInstance.Module.WebXR.Settings.ARRequiredReferenceSpace,
190197
optionalFeatures: this.gameInstance.Module.WebXR.Settings.AROptionalFeatures
@@ -194,11 +201,22 @@
194201
session.isAR = true;
195202
this.xrSession = session;
196203
this.onSessionStarted(session);
204+
}).catch((error) => {
205+
this.BrowserObject.resumeAsyncCallbacks();
206+
this.BrowserObject.mainLoop.resume();
197207
});
198208
}
199209

200210
XRManager.prototype.onRequestVRSession = function () {
201211
if (!this.isVRSupported) return;
212+
this.BrowserObject.pauseAsyncCallbacks();
213+
this.BrowserObject.mainLoop.pause();
214+
var thisXRMananger = this;
215+
var tempRender = function () {
216+
thisXRMananger.ctx.clearColor(0, 0, 0, 0);
217+
thisXRMananger.ctx.clear(thisXRMananger.ctx.COLOR_BUFFER_BIT | thisXRMananger.ctx.DEPTH_BUFFER_BIT);
218+
}
219+
window.requestAnimationFrame( tempRender );
202220
navigator.xr.requestSession('immersive-vr', {
203221
requiredFeatures: this.gameInstance.Module.WebXR.Settings.VRRequiredReferenceSpace,
204222
optionalFeatures: this.gameInstance.Module.WebXR.Settings.VROptionalFeatures
@@ -208,6 +226,9 @@
208226
session.isAR = false;
209227
this.xrSession = session;
210228
this.onSessionStarted(session);
229+
}).catch((error) => {
230+
this.BrowserObject.resumeAsyncCallbacks();
231+
this.BrowserObject.mainLoop.resume();
211232
});
212233
}
213234

@@ -240,6 +261,15 @@
240261
this.didNotifyUnity = false;
241262
this.canvas.width = this.canvas.parentElement.clientWidth * window.devicePixelRatio;
242263
this.canvas.height = this.canvas.parentElement.clientHeight * window.devicePixelRatio;
264+
265+
this.BrowserObject.pauseAsyncCallbacks();
266+
this.BrowserObject.mainLoop.pause();
267+
this.ctx.bindFramebuffer(this.ctx.FRAMEBUFFER);
268+
var thisXRMananger = this;
269+
window.setTimeout(function () {
270+
thisXRMananger.BrowserObject.resumeAsyncCallbacks();
271+
thisXRMananger.BrowserObject.mainLoop.resume();
272+
});
243273
}
244274

245275
XRManager.prototype.onInputSourceEvent = function (xrInputSourceEvent) {
@@ -400,12 +430,6 @@
400430
thisXRMananger.animate(xrFrame);
401431
func(time);
402432
});
403-
} else if (thisXRMananger.inlineSession && thisXRMananger.inlineSession.isInSession) {
404-
return thisXRMananger.inlineSession.requestAnimationFrame((time, xrFrame) =>
405-
{
406-
thisXRMananger.animate(xrFrame);
407-
func(time);
408-
});
409433
} else {
410434
window.requestAnimationFrame(func);
411435
}
@@ -418,9 +442,6 @@
418442
if (thisXRMananger.xrSession.renderState.baseLayer) {
419443
fbo = thisXRMananger.xrSession.renderState.baseLayer.framebuffer;
420444
}
421-
} else if (thisXRMananger.inlineSession && thisXRMananger.inlineSession.isInSession &&
422-
thisXRMananger.inlineSession.renderState.baseLayer) {
423-
fbo = thisXRMananger.inlineSession.renderState.baseLayer.framebuffer;
424445
}
425446
}
426447
return oldBindFramebuffer.call(this, target, fbo);
@@ -439,16 +460,6 @@
439460
this.UpdateXRCapabilities();
440461

441462
this.onInputEvent = this.onInputSourceEvent.bind(this);
442-
443-
navigator.xr.isSessionSupported('inline').then((supported) => {
444-
if (supported) {
445-
navigator.xr.requestSession('inline').then((session) => {
446-
session.isInSession = true;
447-
this.inlineSession = session;
448-
this.onSessionStarted(session);
449-
});
450-
}
451-
});
452463
}
453464

454465
XRManager.prototype.UpdateXRCapabilities = function() {
@@ -669,11 +680,8 @@
669680

670681
session.requestReferenceSpace(refSpaceType).then((refSpace) => {
671682
session.refSpace = refSpace;
672-
if (session.isImmersive)
673-
{
674-
// Inform the session that we're ready to begin drawing.
675-
this.BrowserObject.requestAnimationFrame(this.BrowserObject.mainLoop.runner);
676-
}
683+
this.BrowserObject.resumeAsyncCallbacks();
684+
this.BrowserObject.mainLoop.resume();
677685
});
678686
}
679687

0 commit comments

Comments
 (0)