@@ -5,17 +5,15 @@ import './src/HelioWebXRPolyfill.js';
55import './src/event-target-shim.mjs' ;
66
77import core from './src/core.js' ;
8- // import minimist from '../modules/minimist.js';
98
109import symbols from './src/symbols.js' ;
1110import THREE from './lib/three-min.js' ;
1211
13- // import {lookupHMDTypeIndex, FakeMesher, FakePlaneTracker} from './VR.js';
14-
1512import GlobalContext from './src/GlobalContext.js' ;
1613
17- import XRScene from './src/xr-scene.js' ;
18- window . XRScene = XRScene ;
14+ import { XREngine , XREngineTemplate } from './src/xr-engine.js' ;
15+ window . XREngine = XREngine ;
16+ window . XREngineTemplate = XREngineTemplate ;
1917
2018import utils from './src/utils.js' ;
2119const { _makeNullPromise} = utils ;
@@ -31,34 +29,6 @@ const windows = [];
3129GlobalContext . windows = windows ;
3230GlobalContext . loadPromise = _makeNullPromise ( ) ;
3331
34- const localVector = new THREE . Vector3 ( ) ;
35- const localVector2 = new THREE . Vector3 ( ) ;
36- const localQuaternion = new THREE . Quaternion ( ) ;
37- const localMatrix = new THREE . Matrix4 ( ) ;
38-
39- ( async ( ) => {
40-
41- function parseQuery ( queryString ) {
42- var query = { } ;
43- var pairs = ( queryString [ 0 ] === '?' ? queryString . substr ( 1 ) : queryString ) . split ( '&' ) ;
44- for ( var i = 0 ; i < pairs . length ; i ++ ) {
45- var pair = pairs [ i ] . split ( '=' ) ;
46- query [ decodeURIComponent ( pair [ 0 ] ) ] = decodeURIComponent ( pair [ 1 ] || '' ) ;
47- }
48- return query ;
49- }
50-
51- const { key} = parseQuery ( new URL ( import . meta. url ) . search ) ;
52- if ( ! key ) {
53- console . warn ( 'exokit-web API key not set! Web origins will not work. See https://github.com/exokitxr/exokit-web/' ) ;
54- }
55- await navigator . serviceWorker . register ( '/sw.js' + ( key ? `?key=${ encodeURIComponent ( key ) } ` : '' ) ) ;
56- if ( navigator . serviceWorker . controller ) {
57- GlobalContext . loadPromise . resolve ( ) ;
58- } else {
59- window . location . reload ( ) ;
60- }
61-
6232const xrState = ( ( ) => {
6333 const _makeSab = size => {
6434 const sab = new ArrayBuffer ( size ) ;
@@ -164,6 +134,39 @@ const xrState = (() => {
164134} ) ( ) ;
165135GlobalContext . xrState = xrState ;
166136
137+ const localVector = new THREE . Vector3 ( ) ;
138+ const localVector2 = new THREE . Vector3 ( ) ;
139+ const localQuaternion = new THREE . Quaternion ( ) ;
140+ const localMatrix = new THREE . Matrix4 ( ) ;
141+
142+ customElements . define ( 'xr-engine' , XREngine ) ;
143+ customElements . define ( 'xr-engine-template' , XREngineTemplate , {
144+ extends : 'template' ,
145+ } ) ;
146+
147+ ( async ( ) => {
148+
149+ function parseQuery ( queryString ) {
150+ var query = { } ;
151+ var pairs = ( queryString [ 0 ] === '?' ? queryString . substr ( 1 ) : queryString ) . split ( '&' ) ;
152+ for ( var i = 0 ; i < pairs . length ; i ++ ) {
153+ var pair = pairs [ i ] . split ( '=' ) ;
154+ query [ decodeURIComponent ( pair [ 0 ] ) ] = decodeURIComponent ( pair [ 1 ] || '' ) ;
155+ }
156+ return query ;
157+ }
158+
159+ const { key} = parseQuery ( new URL ( import . meta. url ) . search ) ;
160+ if ( ! key ) {
161+ console . warn ( 'exokit-web API key not set! Web origins will not work. See https://github.com/exokitxr/exokit-web/' ) ;
162+ }
163+ await navigator . serviceWorker . register ( '/sw.js' + ( key ? `?key=${ encodeURIComponent ( key ) } ` : '' ) ) ;
164+ if ( navigator . serviceWorker . controller ) {
165+ GlobalContext . loadPromise . resolve ( ) ;
166+ } else {
167+ window . location . reload ( ) ;
168+ }
169+
167170[ 'keydown' , 'keyup' , 'keypress' , 'paste' ] . forEach ( type => {
168171 window . addEventListener ( type , e => {
169172 const event = {
0 commit comments