Changes
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
@@ -759,37 +759,37 @@ function VisibilityApplier() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const st = useModelStore.getState();
|
const st = useModelStore.getState();
|
||||||
const { hiddenElementKeys, isolatedElementKeys, selectedElementKeys } = st;
|
const { hiddenElementKeys, isolatedElementKeys, selectedElementKeys } = st;
|
||||||
let touched = 0, highlighted = 0;
|
|
||||||
|
|
||||||
scene.traverse((root) => {
|
scene.traverse((root) => {
|
||||||
const modelId = root.userData?.modelId as string | undefined;
|
const modelId = root.userData?.modelId as string | undefined;
|
||||||
if (!modelId) return;
|
if (!modelId) return;
|
||||||
// For each ifcElement descendant inside this model root
|
|
||||||
root.traverse((el) => {
|
root.traverse((el) => {
|
||||||
if (!el.userData?.ifcElement) return;
|
if (!el.userData?.ifcElement) return;
|
||||||
touched++;
|
|
||||||
const key = elementKey(modelId, el);
|
const key = elementKey(modelId, el);
|
||||||
const hidden = hiddenElementKeys.has(key);
|
const hidden = hiddenElementKeys.has(key);
|
||||||
const isolated = isolatedElementKeys ? !isolatedElementKeys.has(key) : false;
|
const isolated = isolatedElementKeys ? !isolatedElementKeys.has(key) : false;
|
||||||
el.visible = !(hidden || isolated);
|
el.visible = !(hidden || isolated);
|
||||||
|
|
||||||
const selected = selectedElementKeys.has(key);
|
const selected = selectedElementKeys.has(key);
|
||||||
if (selected) highlighted++;
|
|
||||||
el.traverse((m) => {
|
el.traverse((m) => {
|
||||||
if (!(m instanceof THREE.Mesh)) return;
|
if (!(m instanceof THREE.Mesh)) return;
|
||||||
const mats = Array.isArray(m.material) ? m.material : [m.material];
|
const mats = Array.isArray(m.material) ? m.material : [m.material];
|
||||||
mats.forEach((mat) => {
|
mats.forEach((mat) => {
|
||||||
if (!(mat instanceof THREE.MeshStandardMaterial)) return;
|
if (!(mat instanceof THREE.MeshStandardMaterial)) return;
|
||||||
if (selected) {
|
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.__origEmissive = mat.emissive.getHex();
|
||||||
m.userData.__origEmissiveIntensity = mat.emissiveIntensity;
|
m.userData.__origEmissiveIntensity = mat.emissiveIntensity;
|
||||||
}
|
}
|
||||||
|
mat.color.set('#f59e0b');
|
||||||
mat.emissive.set('#f59e0b');
|
mat.emissive.set('#f59e0b');
|
||||||
mat.emissiveIntensity = 0.6;
|
mat.emissiveIntensity = 1.0;
|
||||||
} else if (m.userData.__origEmissive !== undefined) {
|
} else if (m.userData.__origColor !== undefined) {
|
||||||
|
mat.color.setHex(m.userData.__origColor as number);
|
||||||
mat.emissive.setHex(m.userData.__origEmissive as number);
|
mat.emissive.setHex(m.userData.__origEmissive as number);
|
||||||
mat.emissiveIntensity = (m.userData.__origEmissiveIntensity as number) ?? 0;
|
mat.emissiveIntensity = (m.userData.__origEmissiveIntensity as number) ?? 0;
|
||||||
|
delete m.userData.__origColor;
|
||||||
delete m.userData.__origEmissive;
|
delete m.userData.__origEmissive;
|
||||||
delete m.userData.__origEmissiveIntensity;
|
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]);
|
}, [scene, nonce, models, opacity, renderMode, checklist]);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user