From c675748edb795330a45f5a631f34c55579819979 Mon Sep 17 00:00:00 2001 From: Leon van Kammen Date: Thu, 22 Jun 2023 12:05:36 +0200 Subject: [PATCH] href: always commit last position first --- dist/xrfragment.aframe.js | 6 ++++-- dist/xrfragment.three.js | 6 ++++-- dist/xrfragment.three.module.js | 6 ++++-- src/3rd/js/three/xrf/href.js | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/dist/xrfragment.aframe.js b/dist/xrfragment.aframe.js index 0951691..711d006 100644 --- a/dist/xrfragment.aframe.js +++ b/dist/xrfragment.aframe.js @@ -1107,11 +1107,13 @@ xrf.frag.href = function(v, opts){ }else if( mesh.material){ mesh.material = mesh.material.clone() } let click = mesh.userData.XRF.href.exec = (e) => { + let lastPos = `#pos=${camera.position.x},${camera.position.y},${camera.position.z}` xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { + xrf.navigator.to(lastPos) // commit last position const flags = v.string[0] == '#' && v.string.match(/(\||#q)/) ? xrf.XRF.PV_OVERRIDE : undefined - xrf.navigator.to(v.string,flags) // or let's surf to HREF! + xrf.navigator.to(v.string,flags) // let's surf to HREF! }) } diff --git a/dist/xrfragment.three.js b/dist/xrfragment.three.js index e18d6f7..ef2265d 100644 --- a/dist/xrfragment.three.js +++ b/dist/xrfragment.three.js @@ -1107,11 +1107,13 @@ xrf.frag.href = function(v, opts){ }else if( mesh.material){ mesh.material = mesh.material.clone() } let click = mesh.userData.XRF.href.exec = (e) => { + let lastPos = `#pos=${camera.position.x},${camera.position.y},${camera.position.z}` xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { + xrf.navigator.to(lastPos) // commit last position const flags = v.string[0] == '#' && v.string.match(/(\||#q)/) ? xrf.XRF.PV_OVERRIDE : undefined - xrf.navigator.to(v.string,flags) // or let's surf to HREF! + xrf.navigator.to(v.string,flags) // let's surf to HREF! }) } diff --git a/dist/xrfragment.three.module.js b/dist/xrfragment.three.module.js index 16938ad..3308e2f 100644 --- a/dist/xrfragment.three.module.js +++ b/dist/xrfragment.three.module.js @@ -1107,11 +1107,13 @@ xrf.frag.href = function(v, opts){ }else if( mesh.material){ mesh.material = mesh.material.clone() } let click = mesh.userData.XRF.href.exec = (e) => { + let lastPos = `#pos=${camera.position.x},${camera.position.y},${camera.position.z}` xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { + xrf.navigator.to(lastPos) // commit last position const flags = v.string[0] == '#' && v.string.match(/(\||#q)/) ? xrf.XRF.PV_OVERRIDE : undefined - xrf.navigator.to(v.string,flags) // or let's surf to HREF! + xrf.navigator.to(v.string,flags) // let's surf to HREF! }) } diff --git a/src/3rd/js/three/xrf/href.js b/src/3rd/js/three/xrf/href.js index 1675da4..e5b016d 100644 --- a/src/3rd/js/three/xrf/href.js +++ b/src/3rd/js/three/xrf/href.js @@ -90,11 +90,13 @@ xrf.frag.href = function(v, opts){ }else if( mesh.material){ mesh.material = mesh.material.clone() } let click = mesh.userData.XRF.href.exec = (e) => { + let lastPos = `#pos=${camera.position.x},${camera.position.y},${camera.position.z}` xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { + xrf.navigator.to(lastPos) // commit last position const flags = v.string[0] == '#' && v.string.match(/(\||#q)/) ? xrf.XRF.PV_OVERRIDE : undefined - xrf.navigator.to(v.string,flags) // or let's surf to HREF! + xrf.navigator.to(v.string,flags) // let's surf to HREF! }) }