From 7ff4ed3176b3c7059d322cb4ebd673f85acb5c9b Mon Sep 17 00:00:00 2001 From: admtracksteel Date: Sat, 30 May 2026 10:13:44 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Auto-deploy:=20melhoria=20no=20s?= =?UTF-8?q?nap=20e=20medi=C3=A7=C3=A3o=20AR=20em=2030/05/2026=2010:13:44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/three/XRControllerMeasure.tsx | 2 +- src/pages/XRSession.tsx | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/three/XRControllerMeasure.tsx b/src/components/three/XRControllerMeasure.tsx index 5c87a20..41d1bcd 100644 --- a/src/components/three/XRControllerMeasure.tsx +++ b/src/components/three/XRControllerMeasure.tsx @@ -82,7 +82,7 @@ export function XRControllerMeasure() { // running them every frame at 72fps can stall the Quest right after // toggling "Medir" from the Ferramentas tab. We cap heavy work to ~24Hz. // Trigger/A/B/L-trigger polling continues every frame for responsiveness. - const hitTestSourceRef = useRef(null); + const hitTestSourceRef = useRef(null); const hitTestRequestedRef = useRef(false); useFrame((_state, _dt, frame: XRFrame | undefined) => { diff --git a/src/pages/XRSession.tsx b/src/pages/XRSession.tsx index 30d51e5..f68457a 100644 --- a/src/pages/XRSession.tsx +++ b/src/pages/XRSession.tsx @@ -448,7 +448,7 @@ function XRGridLandingHandler() { {/* Retícula dourada premium */} - + @@ -557,7 +557,7 @@ function XRVirtRealCalibHandler() { {/* Golden reticle */} - + @@ -920,6 +920,11 @@ function XRSnapHandler() { // ─── Desktop Aligner Fallback for Virt/Real Calibration ─ function XRVirtRealDesktopAligner() { const { gl, camera, scene } = useThree(); + const [tick, setTick] = useState(0); + + useEffect(() => { + return subscribeXRCalibration(() => setTick(t => t + 1)); + }, []); useEffect(() => { const isAligning = xrCalibration.alignType === 'virt-real' && @@ -959,7 +964,7 @@ function XRVirtRealDesktopAligner() { gl.domElement.addEventListener('click', onClick); return () => gl.domElement.removeEventListener('click', onClick); - }, [gl, camera, scene, xrCalibration.step, xrCalibration.alignType]); + }, [gl, camera, scene, tick]); return null; }