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 && (
+
+ )}
+