From 89fbd4636f588e3c37f2fc9175681a45cc924c61 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 00:49:38 +0000
Subject: [PATCH] Changes
---
src/components/XRHud.tsx | 18 ++-
src/components/three/XRHitTestPlacement.tsx | 133 ++++++++++++++++++++
src/pages/XRSession.tsx | 32 ++---
3 files changed, 167 insertions(+), 16 deletions(-)
create mode 100644 src/components/three/XRHitTestPlacement.tsx
diff --git a/src/components/XRHud.tsx b/src/components/XRHud.tsx
index cd8326e..605f4da 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,
+ ClipboardCheck, X, Crosshair,
} from 'lucide-react';
import { Button } from '@/components/ui/button';
import { Slider } from '@/components/ui/slider';
@@ -17,9 +17,11 @@ const ROTATION_STEP = 0.1;
interface XRHudProps {
freeMove: boolean;
onToggleFreeMove: () => void;
+ placementMode?: boolean;
+ onTogglePlacement?: () => void;
}
-export function XRHud({ freeMove, onToggleFreeMove }: XRHudProps) {
+export function XRHud({ freeMove, onToggleFreeMove, placementMode = false, onTogglePlacement }: XRHudProps) {
const [expanded, setExpanded] = useState(false);
const [checklistOpen, setChecklistOpen] = useState(false);
@@ -147,6 +149,18 @@ export function XRHud({ freeMove, onToggleFreeMove }: XRHudProps) {
{expanded ? : }
+ {/* Hit-test placement toggle */}
+ {onTogglePlacement && (
+
+ )}
+