From 6c022c514f87ffc024cf3a14355b34cbbdc4cdc4 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 21:39:39 +0000 Subject: [PATCH] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/components/three/XRHudInWorld.tsx | 52 ++++++++++++++++++--------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/src/components/three/XRHudInWorld.tsx b/src/components/three/XRHudInWorld.tsx index 4f89c49..dd41d6e 100644 --- a/src/components/three/XRHudInWorld.tsx +++ b/src/components/three/XRHudInWorld.tsx @@ -328,6 +328,15 @@ function ToolsTab(p: XRHudInWorldProps) { const setShowGrid = useModelStore((s) => s.setShowGrid); const measureMode = useModelStore((s) => s.measureMode); const setMeasureMode = useModelStore((s) => s.setMeasureMode); + const selectionMode = useModelStore((s) => s.selectionMode); + const setSelectionMode = useModelStore((s) => s.setSelectionMode); + const selectedCount = useModelStore((s) => s.selectedElementKeys.size); + const hideSelectedElements = useModelStore((s) => s.hideSelectedElements); + const isolateSelectedElements = useModelStore((s) => s.isolateSelectedElements); + const showAllElements = useModelStore((s) => s.showAllElements); + const hasHidden = useModelStore((s) => + s.hiddenElementKeys.size > 0 || s.isolatedElementKeys !== null + ); const scaleRatio = useModelStore((s) => s.scaleRatio); const setScaleRatio = useModelStore((s) => s.setScaleRatio); const resetScale = useModelStore((s) => s.resetScale); @@ -353,52 +362,61 @@ function ToolsTab(p: XRHudInWorldProps) { + - + {/* Selecionar — paridade com a tela inicial */} + Selecionar + 0 ? `${selectedCount} sel.` : 'Selec…') : 'Selec'} + active={selectionMode} onClick={() => setSelectionMode(!selectionMode)} /> + + + + + Opacidade {Math.round(opacity * 100)}% - setOpacity(Math.max(0, opacity - 0.25))} /> - setOpacity(Math.max(0, opacity - 0.05))} /> - setOpacity(Math.min(1, opacity + 0.05))} /> - setOpacity(Math.min(1, opacity + 0.25))} /> - setOpacity(1)} /> - + Escala {scaleRatio.label} {SCALE_LABELS.map((lbl, i) => { const preset = SCALE_PRESETS.find((sp) => sp.label === lbl)!; return ( setScaleRatio(preset)} /> ); })} - {/* Reset Escala — devolve a peça ao tamanho 1:1 (cancela qualquer - escala manual feita com duas mãos). */} - - {/* Limpa todos os labels de medição. */} - - {/* Legenda dos controles para Medir */} {measureMode && ( - + Gatilho D: marcar · A: desfazer · B: limpar · Gatilho E: alternar snap )} - - {/* Grid floor controls */} );