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()
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) )
})

View file

@ -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)

View file

@ -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 = []
@ -15,7 +26,7 @@ xrf.filter.scene = function(opts){
xrf.filter
.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
@ -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 )
}
}

View file

@ -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

View file

@ -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
}

View file

@ -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 ){