diff --git a/example/assets/index.glb b/example/assets/index.glb index e4e8ce4..0201256 100644 Binary files a/example/assets/index.glb and b/example/assets/index.glb differ diff --git a/src/3rd/js/aframe/index.js b/src/3rd/js/aframe/index.js index 0d2e498..ce1e8f9 100644 --- a/src/3rd/js/aframe/index.js +++ b/src/3rd/js/aframe/index.js @@ -39,14 +39,13 @@ window.AFRAME.registerComponent('xrf', { p.resolve() AFRAME.fade.out(fastFadeMs) }, fastFadeMs) - } - if( !isLocal ){ + }else if( !isLocal ){ AFRAME.fade.in() setTimeout( () => { p.resolve() setTimeout( () => AFRAME.fade.out(), 1000 ) // allow one second to load textures e.g. }, AFRAME.fade.data.fadetime ) - } + }else p.resolve() } }) @@ -81,7 +80,6 @@ window.AFRAME.registerComponent('xrf', { // cleanup xrf-get objects when resetting scene xrf.addEventListener('reset', (opts) => { - console.log("aframe reset") let els = [...document.querySelectorAll('[xrf-get]')] els.map( (el) => document.querySelector('a-scene').removeChild(el) ) }) diff --git a/src/3rd/js/three/navigator.js b/src/3rd/js/three/navigator.js index 33ccbc3..9514bd6 100644 --- a/src/3rd/js/three/navigator.js +++ b/src/3rd/js/three/navigator.js @@ -40,7 +40,6 @@ xrf.navigator.to = (url,flags,loader,data) => { setTimeout( () => { // give external objects some slack let frag = hashbus.pub( url, model) // and eval URI XR fragments hashbus.pub.XRWG({model,scene:model.scene,frag}) - console.dir(frag) },2000) xrf.add( model.scene ) xrf.navigator.updateHash(hash) diff --git a/src/3rd/js/three/xrf/dynamic/filter.js b/src/3rd/js/three/xrf/dynamic/filter.js index 4feafda..7eea46f 100644 --- a/src/3rd/js/three/xrf/dynamic/filter.js +++ b/src/3rd/js/three/xrf/dynamic/filter.js @@ -1,6 +1,17 @@ /* * TODO: refactor/fix this (queries are being refactored to filters) */ + + +xrf.addEventListener('dynamicKey', (opts) => { + let {scene,id,match,v} = opts + if( v.filter ){ + let frags = {} + frags[ v.fragment ] = v + xrf.filter.scene({frag:frags,scene}) + } +}) + // spec: https://xrfragment.org/#filters xrf.filter = function(query, cb){ let result = [] @@ -14,8 +25,8 @@ xrf.filter.scene = function(opts){ let {scene,frag} = opts xrf.filter - .sort(frag) // get (sorted) filters from XR Fragments - .process(frag,scene) // show/hide things + .sort(frag) // get (sorted) filters from XR Fragments + .process(frag,scene,opts) // show/hide things scene.visible = true // always enable scene @@ -41,11 +52,12 @@ xrf.filter.process = function(frag,scene,opts){ // spec 2: https://xrfragment.org/doc/RFC_XR_Macros.html#embedding-xr-content-using-src // reparent scene based on objectname in case it matches a (non-negating) selector - if( !firstFilter.value && firstFilter.show === true ){ + if( opts.reparent && !firstFilter.value && firstFilter.show === true ){ let obj scene.traverse( (n) => hasName(n, firstFilter.key,firstFilter) && (obj = n) ) if(obj){ while( scene.children.length > 0 ) scene.children[0].removeFromParent() + obj.position.set(0,0,0) scene.add( obj ) } } diff --git a/src/3rd/js/three/xrf/src.js b/src/3rd/js/three/xrf/src.js index a2b1625..09b36d3 100644 --- a/src/3rd/js/three/xrf/src.js +++ b/src/3rd/js/three/xrf/src.js @@ -108,8 +108,7 @@ xrf.frag.src.scale = function(scene, opts, url){ xrf.frag.src.filterScene = (scene,opts) => { let { mesh, model, camera, renderer, THREE, hashbus, frag} = opts - xrf.filter.scene({scene,frag}) - if( scene.children.length == 1 ) scene.children[0].position.set(0,0,0) + xrf.filter.scene({scene,frag,reparent:true}) scene.traverse( (m) => { if( m.userData && (m.userData.src || m.userData.href) ) return ; // prevent infinite recursion diff --git a/src/3rd/js/three/xrf/src/audio.js b/src/3rd/js/three/xrf/src/audio.js index e4ce492..7ee11b4 100644 --- a/src/3rd/js/three/xrf/src/audio.js +++ b/src/3rd/js/three/xrf/src/audio.js @@ -54,7 +54,6 @@ let loadAudio = (mimetype) => function(url,opts){ if( t.z > 0 ) sound.setLoopEnd( loopEnd ) if( t.y != undefined ){ - console.dir({loopStart,t}) sound.setLoopStart( loopStart ) sound.offset = loopStart } diff --git a/src/3rd/js/three/xrf/t.js b/src/3rd/js/three/xrf/t.js index 5716ff2..63668b5 100644 --- a/src/3rd/js/three/xrf/t.js +++ b/src/3rd/js/three/xrf/t.js @@ -151,7 +151,6 @@ xrf.addEventListener('render', (opts) => { xrf.addEventListener('dynamicKey', (opts) => { // select active camera if any let {id,match,v} = opts - console.dir(opts) match.map( (w) => { w.nodes.map( (node) => { if( node.isCamera ){