Newer
Older
HuangJiPC / public / static / three / examples / js / vr / HelioWebXRPolyfill.js
@zhangdeliang zhangdeliang on 21 Jun 1 KB update
/**
 * @author mvilledieu / http://github.com/mvilledieu
 */

if ( /(Helio)/g.test( navigator.userAgent ) && 'xr' in navigator ) {

	console.log( "Helio WebXR Polyfill (Lumin 0.98.0)" );

	if ( 'isSessionSupported' in navigator.xr ) {

		const tempIsSessionSupported = navigator.xr.isSessionSupported.bind( navigator.xr );

		navigator.xr.isSessionSupported = function ( /*sessionType*/ ) {

			// Force using immersive-ar
			return tempIsSessionSupported( 'immersive-ar' );

		};

	}

	if ( 'isSessionSupported' in navigator.xr && 'requestSession' in navigator.xr ) {

		const tempRequestSession = navigator.xr.requestSession.bind( navigator.xr );

		navigator.xr.requestSession = function ( /*sessionType*/ ) {

			return new Promise( function ( resolve, reject ) {

				var sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor' ] };

				tempRequestSession( 'immersive-ar', sessionInit ).then( function ( session ) {

					resolve( session );

				} ).catch( function ( error ) {

					return reject( error );

				} );

			} );

		};

	}

}