diff --git a/src/components/three/ModelViewer.tsx b/src/components/three/ModelViewer.tsx index 501f71f..4e98c9d 100644 --- a/src/components/three/ModelViewer.tsx +++ b/src/components/three/ModelViewer.tsx @@ -759,37 +759,37 @@ function VisibilityApplier() { useEffect(() => { const st = useModelStore.getState(); const { hiddenElementKeys, isolatedElementKeys, selectedElementKeys } = st; - let touched = 0, highlighted = 0; scene.traverse((root) => { const modelId = root.userData?.modelId as string | undefined; if (!modelId) return; - // For each ifcElement descendant inside this model root root.traverse((el) => { if (!el.userData?.ifcElement) return; - touched++; const key = elementKey(modelId, el); const hidden = hiddenElementKeys.has(key); const isolated = isolatedElementKeys ? !isolatedElementKeys.has(key) : false; el.visible = !(hidden || isolated); const selected = selectedElementKeys.has(key); - if (selected) highlighted++; el.traverse((m) => { if (!(m instanceof THREE.Mesh)) return; const mats = Array.isArray(m.material) ? m.material : [m.material]; mats.forEach((mat) => { if (!(mat instanceof THREE.MeshStandardMaterial)) return; if (selected) { - if (m.userData.__origEmissive === undefined) { + if (m.userData.__origColor === undefined) { + m.userData.__origColor = mat.color.getHex(); m.userData.__origEmissive = mat.emissive.getHex(); m.userData.__origEmissiveIntensity = mat.emissiveIntensity; } + mat.color.set('#f59e0b'); mat.emissive.set('#f59e0b'); - mat.emissiveIntensity = 0.6; - } else if (m.userData.__origEmissive !== undefined) { + mat.emissiveIntensity = 1.0; + } else if (m.userData.__origColor !== undefined) { + mat.color.setHex(m.userData.__origColor as number); mat.emissive.setHex(m.userData.__origEmissive as number); mat.emissiveIntensity = (m.userData.__origEmissiveIntensity as number) ?? 0; + delete m.userData.__origColor; delete m.userData.__origEmissive; delete m.userData.__origEmissiveIntensity; } @@ -798,7 +798,6 @@ function VisibilityApplier() { }); }); }); - console.log('[VisibilityApplier] ran', { touched, highlighted, selectedKeys: Array.from(selectedElementKeys) }); }, [scene, nonce, models, opacity, renderMode, checklist]); return null;