Commit 63bb7203 authored by Alex Cooper's avatar Alex Cooper Committed by Commit Bot

Fix inline sessions for webxr samples

Inline sessions with options now require user activation or they are
rejected.  This changes pages with inline sessions to default request
an inline session without any options and to request the options in a
tap gesture (since Android is currently the only platform that really
supports modes other than viewer)

Bug: 1005159
Change-Id: Ia6941200d14c29f962f95cd5bfe9b662a9b0eec8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1810757
Auto-Submit: Alexander Cooper <alcooper@chromium.org>
Commit-Queue: Jacob DeWitt <jacde@chromium.org>
Reviewed-by: default avatarJacob DeWitt <jacde@chromium.org>
Cr-Commit-Position: refs/heads/master@{#697645}
parent 7921deea
...@@ -89,7 +89,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -89,7 +89,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local'] });
}, { once: true });
})
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -129,9 +136,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -129,9 +136,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
initGL(); initGL();
...@@ -158,6 +171,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -158,6 +171,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} }
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -89,7 +89,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -89,7 +89,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local'] });
}, { once: true });
})
});
} else { } else {
// If navigator.xr isn't present in the browser then we need to use // If navigator.xr isn't present in the browser then we need to use
// the fallback rendering path. // the fallback rendering path.
...@@ -148,9 +155,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -148,9 +155,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
initGL(); initGL();
...@@ -177,6 +190,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -177,6 +190,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} }
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -89,7 +89,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -89,7 +89,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline').then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local-floor'] });
}, { once: true });
})
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -136,9 +143,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -136,9 +143,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
initGL(); initGL();
...@@ -171,6 +184,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -171,6 +184,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -307,7 +307,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -307,7 +307,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
scene.addNode(playButton); scene.addNode(playButton);
}); });
navigator.xr.requestSession('inline', {optionalFeatures: ['local-floor']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local-floor'] });
})
}, { once: true });
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -349,10 +356,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -349,10 +356,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode) {
session.mode = 'inline';
}
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
session.addEventListener('selectstart', onSelectStart); session.addEventListener('selectstart', onSelectStart);
...@@ -394,6 +406,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -394,6 +406,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -85,7 +85,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -85,7 +85,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline').then(onSessionStarted); requestInlineSession();
} else { } else {
initFallback(); initFallback();
} }
...@@ -133,9 +133,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -133,9 +133,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
initGL(); initGL();
...@@ -162,6 +168,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -162,6 +168,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} }
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -90,7 +90,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -90,7 +90,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local-floor']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local-floor'] });
})
}, { once: true });
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -111,6 +118,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -111,6 +118,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function initGL() { function initGL() {
if (gl) if (gl)
return; return;
...@@ -144,8 +159,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -144,8 +159,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} }
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.ended = false; session.ended = false;
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
...@@ -197,6 +210,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -197,6 +210,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
pollBounds(session); pollBounds(session);
} }
}); });
return session;
} }
function sleep(ms) { function sleep(ms) {
......
...@@ -99,11 +99,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -99,11 +99,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local-floor']}) requestInlineSession()
.then((session) => { .then((session) => {
session.mode = 'inline'; gl.canvas.addEventListener('touchend', () => {
onSessionStarted(session); session.end().then(() => {
}); requestInlineSession({ optionalFeatures: ['local-floor'] });
})
}, { once: true });
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -159,6 +162,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -159,6 +162,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
...@@ -187,6 +198,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -187,6 +198,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -140,7 +140,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -140,7 +140,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local'] });
}, { once: true });
})
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -180,10 +187,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -180,10 +187,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode) {
session.mode = 'inline';
}
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
session.addEventListener('select', (ev) => { session.addEventListener('select', (ev) => {
let refSpace = ev.frame.session.mode.startsWith('immersive') ? let refSpace = ev.frame.session.mode.startsWith('immersive') ?
...@@ -221,6 +233,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -221,6 +233,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -113,11 +113,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -113,11 +113,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
xrButton.addToHeader(); xrButton.addToHeader();
if (navigator.xr) { if (navigator.xr) {
const mode = 'inline'; requestInlineSession()
navigator.xr.requestSession(mode, {optionalFeatures: ['local-floor']})
.then((session) => { .then((session) => {
session.mode = mode; gl.canvas.addEventListener('touchend', () => {
onSessionStarted(session); session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local-floor'] });
}, { once: true });
})
}); });
} else { } else {
// Still render the initial scene if WebXR is not available. // Still render the initial scene if WebXR is not available.
...@@ -209,10 +211,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -209,10 +211,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode) {
session.mode = 'inline';
}
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
...@@ -260,6 +267,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -260,6 +267,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
}); });
return session;
} }
// Used for updating the origin offset. // Used for updating the origin offset.
......
...@@ -267,7 +267,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -267,7 +267,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
if (navigator.xr) { if (navigator.xr) {
// Set up "magic window" mode. // Set up "magic window" mode.
if (appSettings.magicWindow) { if (appSettings.magicWindow) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local'] });
}, { once: true });
})
});
} }
} else { } else {
initFallback(); initFallback();
...@@ -303,6 +310,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -303,6 +310,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
scene.inputRenderer.setControllerMesh(new Gltf2Node({url: '../media/gltf/controller/controller.gltf'})); scene.inputRenderer.setControllerMesh(new Gltf2Node({url: '../media/gltf/controller/controller.gltf'}));
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onRequestSession() { function onRequestSession() {
let xrMode = appSettings.arMode ? 'immersive-ar' : 'immersive-vr'; let xrMode = appSettings.arMode ? 'immersive-ar' : 'immersive-vr';
navigator.xr.requestSession(xrMode).then((session) => { navigator.xr.requestSession(xrMode).then((session) => {
...@@ -313,8 +328,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -313,8 +328,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} }
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
initGL(); initGL();
...@@ -342,6 +355,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -342,6 +355,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} }
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -87,7 +87,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -87,7 +87,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local'] });
}, { once: true });
})
});
} }
} }
...@@ -113,9 +120,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -113,9 +120,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
initGL(); initGL();
...@@ -142,6 +155,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -142,6 +155,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} }
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -98,7 +98,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -98,7 +98,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local-floor']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local-floor'] });
}, { once: true });
})
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -231,10 +238,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -231,10 +238,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode) {
session.mode = 'inline';
}
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
session.addEventListener('select', (ev) => { session.addEventListener('select', (ev) => {
...@@ -274,6 +286,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -274,6 +286,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onEndSession(session) { function onEndSession(session) {
......
...@@ -87,7 +87,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -87,7 +87,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local-floor']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local-floor'] });
}, { once: true });
})
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -129,9 +136,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -129,9 +136,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode)
session.mode = 'inline';
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
session.addEventListener('selectstart', onSelectStart); session.addEventListener('selectstart', onSelectStart);
...@@ -168,6 +181,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -168,6 +181,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
let selecting = false; let selecting = false;
......
...@@ -96,7 +96,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -96,7 +96,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
document.querySelector('header').appendChild(xrButton.domElement); document.querySelector('header').appendChild(xrButton.domElement);
if (navigator.xr) { if (navigator.xr) {
navigator.xr.requestSession('inline', {optionalFeatures: ['local-floor']}).then(onSessionStarted); requestInlineSession()
.then((session) => {
gl.canvas.addEventListener('touchend', () => {
session.end().then(() => {
requestInlineSession({ optionalFeatures: ['local-floor'] });
}, { once: true });
})
});
} else { } else {
initFallback(); initFallback();
} }
...@@ -141,10 +148,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -141,10 +148,15 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}); });
} }
function requestInlineSession(options) {
return navigator.xr.requestSession('inline', options)
.then((session) => {
session.mode = 'inline';
return onSessionStarted(session);
});
}
function onSessionStarted(session) { function onSessionStarted(session) {
if (!session.mode) {
session.mode = 'inline';
}
session.addEventListener('end', onSessionEnded); session.addEventListener('end', onSessionEnded);
...@@ -177,6 +189,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -177,6 +189,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
session.requestAnimationFrame(onXRFrame); session.requestAnimationFrame(onXRFrame);
}); });
return session;
} }
function onSelect(ev) { function onSelect(ev) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment