cleanup (pending bug: duplicate non-euclidian different scales

This commit is contained in:
Leon van Kammen 2023-11-17 18:15:22 +01:00
parent 0bbf3ae5e4
commit 969251eb7d
7 changed files with 18 additions and 12 deletions

Binary file not shown.

View file

@ -39,14 +39,13 @@ window.AFRAME.registerComponent('xrf', {
p.resolve() p.resolve()
AFRAME.fade.out(fastFadeMs) AFRAME.fade.out(fastFadeMs)
}, fastFadeMs) }, fastFadeMs)
} }else if( !isLocal ){
if( !isLocal ){
AFRAME.fade.in() AFRAME.fade.in()
setTimeout( () => { setTimeout( () => {
p.resolve() p.resolve()
setTimeout( () => AFRAME.fade.out(), 1000 ) // allow one second to load textures e.g. setTimeout( () => AFRAME.fade.out(), 1000 ) // allow one second to load textures e.g.
}, AFRAME.fade.data.fadetime ) }, AFRAME.fade.data.fadetime )
} }else p.resolve()
} }
}) })
@ -81,7 +80,6 @@ window.AFRAME.registerComponent('xrf', {
// cleanup xrf-get objects when resetting scene // cleanup xrf-get objects when resetting scene
xrf.addEventListener('reset', (opts) => { xrf.addEventListener('reset', (opts) => {
console.log("aframe reset")
let els = [...document.querySelectorAll('[xrf-get]')] let els = [...document.querySelectorAll('[xrf-get]')]
els.map( (el) => document.querySelector('a-scene').removeChild(el) ) els.map( (el) => document.querySelector('a-scene').removeChild(el) )
}) })

View file

@ -40,7 +40,6 @@ xrf.navigator.to = (url,flags,loader,data) => {
setTimeout( () => { // give external objects some slack setTimeout( () => { // give external objects some slack
let frag = hashbus.pub( url, model) // and eval URI XR fragments let frag = hashbus.pub( url, model) // and eval URI XR fragments
hashbus.pub.XRWG({model,scene:model.scene,frag}) hashbus.pub.XRWG({model,scene:model.scene,frag})
console.dir(frag)
},2000) },2000)
xrf.add( model.scene ) xrf.add( model.scene )
xrf.navigator.updateHash(hash) xrf.navigator.updateHash(hash)

View file

@ -1,6 +1,17 @@
/* /*
* TODO: refactor/fix this (queries are being refactored to filters) * 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 // spec: https://xrfragment.org/#filters
xrf.filter = function(query, cb){ xrf.filter = function(query, cb){
let result = [] let result = []
@ -14,8 +25,8 @@ xrf.filter.scene = function(opts){
let {scene,frag} = opts let {scene,frag} = opts
xrf.filter xrf.filter
.sort(frag) // get (sorted) filters from XR Fragments .sort(frag) // get (sorted) filters from XR Fragments
.process(frag,scene) // show/hide things .process(frag,scene,opts) // show/hide things
scene.visible = true // always enable scene 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 // 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 // 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 let obj
scene.traverse( (n) => hasName(n, firstFilter.key,firstFilter) && (obj = n) ) scene.traverse( (n) => hasName(n, firstFilter.key,firstFilter) && (obj = n) )
if(obj){ if(obj){
while( scene.children.length > 0 ) scene.children[0].removeFromParent() while( scene.children.length > 0 ) scene.children[0].removeFromParent()
obj.position.set(0,0,0)
scene.add( obj ) scene.add( obj )
} }
} }

View file

@ -108,8 +108,7 @@ xrf.frag.src.scale = function(scene, opts, url){
xrf.frag.src.filterScene = (scene,opts) => { xrf.frag.src.filterScene = (scene,opts) => {
let { mesh, model, camera, renderer, THREE, hashbus, frag} = opts let { mesh, model, camera, renderer, THREE, hashbus, frag} = opts
xrf.filter.scene({scene,frag}) xrf.filter.scene({scene,frag,reparent:true})
if( scene.children.length == 1 ) scene.children[0].position.set(0,0,0)
scene.traverse( (m) => { scene.traverse( (m) => {
if( m.userData && (m.userData.src || m.userData.href) ) return ; // prevent infinite recursion if( m.userData && (m.userData.src || m.userData.href) ) return ; // prevent infinite recursion

View file

@ -54,7 +54,6 @@ let loadAudio = (mimetype) => function(url,opts){
if( t.z > 0 ) sound.setLoopEnd( loopEnd ) if( t.z > 0 ) sound.setLoopEnd( loopEnd )
if( t.y != undefined ){ if( t.y != undefined ){
console.dir({loopStart,t})
sound.setLoopStart( loopStart ) sound.setLoopStart( loopStart )
sound.offset = loopStart sound.offset = loopStart
} }

View file

@ -151,7 +151,6 @@ xrf.addEventListener('render', (opts) => {
xrf.addEventListener('dynamicKey', (opts) => { xrf.addEventListener('dynamicKey', (opts) => {
// select active camera if any // select active camera if any
let {id,match,v} = opts let {id,match,v} = opts
console.dir(opts)
match.map( (w) => { match.map( (w) => {
w.nodes.map( (node) => { w.nodes.map( (node) => {
if( node.isCamera ){ if( node.isCamera ){