From 6e11620e30b6b5a85eae5e996a1eeddf63bbdf72 Mon Sep 17 00:00:00 2001
From: "gpt-engineer-app[bot]"
<159125892+gpt-engineer-app[bot]@users.noreply.github.com>
Date: Fri, 15 May 2026 11:36:52 +0000
Subject: [PATCH] Changes
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
---
src/components/three/XRHudInWorld.tsx | 34 +++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/src/components/three/XRHudInWorld.tsx b/src/components/three/XRHudInWorld.tsx
index ce1921b..5c6bf98 100644
--- a/src/components/three/XRHudInWorld.tsx
+++ b/src/components/three/XRHudInWorld.tsx
@@ -309,6 +309,40 @@ function ToolsTab(p: XRHudInWorldProps) {
onClick={() => setScaleRatio(preset)} />
);
})}
+
+ {/* Grid floor controls */}
+
+
+ );
+}
+
+function GridFloorRow() {
+ const { camera } = useThree();
+ const gridY = useModelStore((s) => s.gridY);
+ const gridAutoFollow = useModelStore((s) => s.gridAutoFollow);
+ const setGridAutoFollow = useModelStore((s) => s.setGridAutoFollow);
+ const setGridY = useModelStore((s) => s.setGridY);
+ const nudgeGridY = useModelStore((s) => s.nudgeGridY);
+ const placeAtFloor = () => {
+ // Headset eye Y minus avg standing eye height (1.6 m)
+ const floor = camera.position.y - 1.6;
+ setGridY(floor);
+ };
+ return (
+
+
+ Grid Y {(gridY * 1000).toFixed(0)}mm {gridAutoFollow ? '(auto)' : '(travado)'}
+
+ setGridAutoFollow(true)} />
+ setGridAutoFollow(false)} />
+ nudgeGridY(-0.01)} />
+ nudgeGridY(0.01)} />
+
);
}