From 414317889c1e40e001bc8b8be589659f4c2158f3 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 01:27:17 +0000 Subject: [PATCH] Changes --- src/components/XRHud.tsx | 19 ++- src/components/three/XRHitTestPlacement.tsx | 164 ++++++++++++++++++-- src/components/three/XRPlaneOverlay.tsx | 95 ++++++++++++ src/pages/XRSession.tsx | 4 + 4 files changed, 266 insertions(+), 16 deletions(-) create mode 100644 src/components/three/XRPlaneOverlay.tsx diff --git a/src/components/XRHud.tsx b/src/components/XRHud.tsx index 605f4da..ab9c945 100644 --- a/src/components/XRHud.tsx +++ b/src/components/XRHud.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { Eye, LayoutGrid, Grid3X3, Box, Ruler, Trash2, Camera, Move, RotateCw, RefreshCw, ChevronUp, ChevronDown, Grip, - ClipboardCheck, X, Crosshair, + ClipboardCheck, X, Crosshair, Magnet, } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Slider } from '@/components/ui/slider'; @@ -19,9 +19,11 @@ interface XRHudProps { onToggleFreeMove: () => void; placementMode?: boolean; onTogglePlacement?: () => void; + snapToPlanes?: boolean; + onToggleSnap?: () => void; } -export function XRHud({ freeMove, onToggleFreeMove, placementMode = false, onTogglePlacement }: XRHudProps) { +export function XRHud({ freeMove, onToggleFreeMove, placementMode = false, onTogglePlacement, snapToPlanes = true, onToggleSnap }: XRHudProps) { const [expanded, setExpanded] = useState(false); const [checklistOpen, setChecklistOpen] = useState(false); @@ -161,6 +163,19 @@ export function XRHud({ freeMove, onToggleFreeMove, placementMode = false, onTog )} + {/* Snap to planes toggle */} + {onToggleSnap && ( + + )} +