// gaze click on mobile VR AFRAME.registerComponent('xrf-gaze',{ schema:{ spawn:{type:'boolean',default:false}, }, setGazer: function(state){ let cam = document.querySelector("[camera]") if( state ){ if( cam.innerHTML.match(/cursor/) ) return; // avoid duplicate calls cam.innerHTML = ` ` }else{ cam.innerHTML = '' } }, init:function(data){ this.immersive = false; let enabled = () => AFRAME.utils.device.isMobile() let setVisible = () => this.el.setAttribute('visible', enabled() ) this.setGazer(enabled()) setVisible(); document.querySelector("a-scene").addEventListener('exit-vr', () => { this.immersive = false; setVisible() }) document.querySelector("a-scene").addEventListener('enter-vr', () => { this.immersive = true; setVisible() if( !document.querySelector("#cursor") ) return }) let highlightMesh = (state) => (e) => { if( !e.target.object3D ) return let obj = e.target.object3D.children[0] if( obj.userData && obj.userData.XRF && obj.userData.XRF.href ) obj.userData.XRF.href.selected( state )() } this.el.addEventListener("mouseenter", highlightMesh(true) ) this.el.addEventListener("mouseleave", highlightMesh(false ) ) //this.el.addEventListener('click',function(evt){ // document.querySelector('a-scene').querySelector('#player').setAttribute('position',{ // x:this.getAttribute('position').x, // y:this.getAttribute('position').y, // z:this.getAttribute('position').z // }); //}); } });