// look-controls turns off autoUpdateMatrix (of player) which // will break repositionining the VR rig (teleporting and other stuff) // overriding this below is easier then adding updateMatrixWorld() everywhere else // (or rolling your own look-controls and diverting from mainbranch) AFRAME.registerComponent('patch-look-controls',{ init: function(){ alert("fjo"); //dEventListener('loaded', () => this.patchLookControls() ) }, patchLookControls: function(){ alert("ja!") let lk = document.querySelector('[look-controls]') if( !lk ) return lk = lk.components['look-controls'] lk.onEnterVR = function () { var sceneEl = this.el.sceneEl; if (!sceneEl.checkHeadsetConnected()) { return; } this.saveCameraPose(); this.el.object3D.position.set(0, 0, 0); this.el.object3D.rotation.set(0, 0, 0); if (sceneEl.hasWebXR) { // this.el.object3D.matrixAutoUpdate = false; this.el.object3D.updateMatrix(); } } /** * Restore the pose. */ lk.onExitVR = function () { if (!this.el.sceneEl.checkHeadsetConnected()) { return; } this.restoreCameraPose(); this.previousHMDPosition.set(0, 0, 0); this.el.object3D.matrixAutoUpdate = true; } // it also needs to apply the offset (in case the #rot was used in URLS) lk.updateOrientation = function () { var object3D = this.el.object3D; var pitchObject = this.pitchObject; var yawObject = this.yawObject; var sceneEl = this.el.sceneEl; // In VR or AR mode, THREE is in charge of updating the camera pose. if ((sceneEl.is('vr-mode') || sceneEl.is('ar-mode')) && sceneEl.checkHeadsetConnected()) { // With WebXR THREE applies headset pose to the object3D internally. return; } this.updateMagicWindowOrientation(); let offsetX = object3D.rotation.offset ? object3D.rotation.offset.x : 0 let offsetY = object3D.rotation.offset ? object3D.rotation.offset.y : 0 // On mobile, do camera rotation with touch events and sensors. object3D.rotation.x = this.magicWindowDeltaEuler.x + offsetX + pitchObject.rotation.x; object3D.rotation.y = this.magicWindowDeltaEuler.y + offsetY + yawObject.rotation.y; object3D.rotation.z = this.magicWindowDeltaEuler.z; object3D.matrixAutoUpdate = true } } })