🚀 Auto-deploy: melhoria no snap e medição AR em 24/05/2026 16:24:21

This commit is contained in:
2026-05-24 16:24:21 +00:00
parent 00a8cee511
commit 06556c7a45
+19 -7
View File
@@ -74,20 +74,32 @@ export function XRHudInWorld(props: XRHudInWorldProps) {
const headLockRef = useRef<THREE.Group>(null); const headLockRef = useRef<THREE.Group>(null);
const targetPos = useRef(new THREE.Vector3()); const targetPos = useRef(new THREE.Vector3());
const targetQuat = useRef(new THREE.Quaternion()); const targetQuat = useRef(new THREE.Quaternion());
const lastABtn = useRef(false); const [showQuickMenu, setShowQuickMenu] = useState(true);
const lastXBtn = useRef(false);
const lastYBtn = useRef(false);
/** Cached offset from controller to panel at drag start. */ /** Cached offset from controller to panel at drag start. */
const dragOffsetPos = useRef(new THREE.Vector3()); const dragOffsetPos = useRef(new THREE.Vector3());
const dragOffsetQuat = useRef(new THREE.Quaternion()); const dragOffsetQuat = useRef(new THREE.Quaternion());
const dragInitialized = useRef(false); const dragInitialized = useRef(false);
useFrame(() => { useFrame(() => {
// Toggle via left A button (Quest Touch buttons[4])
const gp = leftCtrl?.inputSource?.gamepad; const gp = leftCtrl?.inputSource?.gamepad;
if (gp) { if (gp) {
const aBtn = gp.buttons[4]; // Toggle quick menu via left X button (Quest Touch buttons[4] on left controller)
const pressed = !!aBtn?.pressed; const xBtn = gp.buttons[4];
if (pressed && !lastABtn.current) setOpen(!open); const pressedX = !!xBtn?.pressed;
lastABtn.current = pressed; if (pressedX && !lastXBtn.current) {
setShowQuickMenu((prev) => !prev);
}
lastXBtn.current = pressedX;
// Toggle main HUD via left Y button (Quest Touch buttons[5] on left controller)
const yBtn = gp.buttons[5];
const pressedY = !!yBtn?.pressed;
if (pressedY && !lastYBtn.current) {
setOpen(!open);
}
lastYBtn.current = pressedY;
} }
// Floating panel: // Floating panel:
@@ -171,7 +183,7 @@ export function XRHudInWorld(props: XRHudInWorldProps) {
<> <>
<WristToggle ref={wristRef} open={open} onToggle={() => setOpen(!open)} /> <WristToggle ref={wristRef} open={open} onToggle={() => setOpen(!open)} />
{/* Head-locked fallback: always-visible quick controls in lower-right of FOV */} {/* Head-locked fallback: always-visible quick controls in lower-right of FOV */}
<group ref={headLockRef} renderOrder={999}> <group ref={headLockRef} renderOrder={999} visible={showQuickMenu}>
<XR3DButton position={[0, 0.026, 0]} size={[0.07, 0.022]} <XR3DButton position={[0, 0.026, 0]} size={[0.07, 0.022]}
label={open ? '✕ Menu' : '☰ Menu'} active={open} label={open ? '✕ Menu' : '☰ Menu'} active={open}
onClick={() => { setOpen(!open); reanchorRequested.current = true; }} onClick={() => { setOpen(!open); reanchorRequested.current = true; }}