diff --git a/src/pages/XRSession.tsx b/src/pages/XRSession.tsx index f937d12..e79550e 100644 --- a/src/pages/XRSession.tsx +++ b/src/pages/XRSession.tsx @@ -17,6 +17,7 @@ import { findNearestVertex } from '@/components/three/SmartMeasure'; import { XRHitTestPlacement } from '@/components/three/XRHitTestPlacement'; import { XRGrabbable } from '@/components/three/XRGrabbable'; import { XRControllerMeasure } from '@/components/three/XRControllerMeasure'; +import { ControllerLocomotion } from '@/components/three/ControllerLocomotion'; // DEVKIT: remove these imports + all `// DEVKIT:` blocks below to strip devkit import { useDevKit } from '@/devkit/useDevKit'; import { DevPanel } from '@/devkit/DevPanel'; @@ -470,9 +471,13 @@ const XRSession = () => { const [freeMove, setFreeMove] = useState(true); const [placementMode, setPlacementMode] = useState(true); // start in placement mode const [snapToPlanes, setSnapToPlanes] = useState(true); - const [allowScale, setAllowScale] = useState(false); + // Zoom por grip duplo é SEMPRE ligado (parte do mapeamento padrão). + const allowScale = true; + const setAllowScale = () => {}; const [liveCode, setLiveCode] = useState(null); const [liveViewers, setLiveViewers] = useState(0); + // Rig que envolve — locomoção por joystick escreve aqui. + const rigRef = useRef(null); // DEVKIT: simXR forces in-XR rendering on desktop without a real WebXR session const devkit = useDevKit(); const [simXR, setSimXR] = useState(false); @@ -569,7 +574,9 @@ const XRSession = () => { - + + + {effectiveInXR ? ( <>