diff --git a/dist/xrfragment.aframe.js b/dist/xrfragment.aframe.js index 9052723..cd605aa 100644 --- a/dist/xrfragment.aframe.js +++ b/dist/xrfragment.aframe.js @@ -854,9 +854,11 @@ xrf.add = (object) => { xrf.navigator = {} xrf.navigator.to = (url,event) => { + debugger return new Promise( (resolve,reject) => { console.log("xrfragment: navigating to "+url) let {urlObj,dir,file,hash,ext} = xrf.parseUrl(url) + if( xrf.model.file == file ) return resolve(xrf.model) // we're already loaded if( xrf.model && xrf.model.scene ) xrf.model.scene.visible = false const Loader = xrf.loaders[ext] if( !Loader ) throw 'xrfragment: no loader passed to xrfragment for extension .'+ext @@ -865,11 +867,10 @@ xrf.navigator.to = (url,event) => { if( dir ) dir = dir[0] == '.' ? dir : `.${dir}` const loader = new Loader().setPath( dir ) loader.load( file, function(model){ + model.file = file xrf.add( model.scene ) xrf.model = model - // if( event && event.type == "popstate" ){ - xrf.navigator.commit( file, hash ) - // } + xrf.navigator.commit( file, hash ) resolve(model) }) }) diff --git a/dist/xrfragment.three.js b/dist/xrfragment.three.js index c9ceda2..6611626 100644 --- a/dist/xrfragment.three.js +++ b/dist/xrfragment.three.js @@ -854,9 +854,11 @@ xrf.add = (object) => { xrf.navigator = {} xrf.navigator.to = (url,event) => { + debugger return new Promise( (resolve,reject) => { console.log("xrfragment: navigating to "+url) let {urlObj,dir,file,hash,ext} = xrf.parseUrl(url) + if( xrf.model.file == file ) return resolve(xrf.model) // we're already loaded if( xrf.model && xrf.model.scene ) xrf.model.scene.visible = false const Loader = xrf.loaders[ext] if( !Loader ) throw 'xrfragment: no loader passed to xrfragment for extension .'+ext @@ -865,11 +867,10 @@ xrf.navigator.to = (url,event) => { if( dir ) dir = dir[0] == '.' ? dir : `.${dir}` const loader = new Loader().setPath( dir ) loader.load( file, function(model){ + model.file = file xrf.add( model.scene ) xrf.model = model - // if( event && event.type == "popstate" ){ - xrf.navigator.commit( file, hash ) - // } + xrf.navigator.commit( file, hash ) resolve(model) }) }) diff --git a/src/3rd/three/navigator.js b/src/3rd/three/navigator.js index 0031e13..b29243c 100644 --- a/src/3rd/three/navigator.js +++ b/src/3rd/three/navigator.js @@ -1,9 +1,11 @@ xrf.navigator = {} xrf.navigator.to = (url,event) => { + debugger return new Promise( (resolve,reject) => { console.log("xrfragment: navigating to "+url) let {urlObj,dir,file,hash,ext} = xrf.parseUrl(url) + if( xrf.model.file == file ) return resolve(xrf.model) // we're already loaded if( xrf.model && xrf.model.scene ) xrf.model.scene.visible = false const Loader = xrf.loaders[ext] if( !Loader ) throw 'xrfragment: no loader passed to xrfragment for extension .'+ext @@ -12,11 +14,10 @@ xrf.navigator.to = (url,event) => { if( dir ) dir = dir[0] == '.' ? dir : `.${dir}` const loader = new Loader().setPath( dir ) loader.load( file, function(model){ + model.file = file xrf.add( model.scene ) xrf.model = model - // if( event && event.type == "popstate" ){ - xrf.navigator.commit( file, hash ) - // } + xrf.navigator.commit( file, hash ) resolve(model) }) })