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)} /> + ); }