feat: HVAC ductwork + DWV plumbing systems (#402)

Adds two new MEP node families (HVAC ductwork, DWV plumbing) built on a shared port-connectivity model. Co-authored by @sudhir9297.
This commit is contained in:
Sudhir Yadav
2026-06-16 15:30:39 -04:00
committed by GitHub
parent a0d3d9c701
commit 5551500d98
172 changed files with 17361 additions and 150 deletions
@@ -64,6 +64,14 @@ export const GeometrySystem = () => {
// shelf dirties the shelf without altering its boards.
const builtGeometryKeyRef = useRef<Map<string, string>>(new Map())
// Re-mark every geometry-backed node dirty whenever a viewer appearance
// value changes, so `def.geometry` builders re-run and pick up the new
// shading / texture / preset / theme. These four are deliberate re-run
// TRIGGERS, not values read in the body — the effect re-fires on any
// change. They're primitives (stable by value), so listing them is safe;
// biome flags them as "unnecessary" because the body doesn't reference
// them, but dropping them silently breaks appearance-mode switching.
// biome-ignore lint/correctness/useExhaustiveDependencies: shading/textures/colorPreset/sceneTheme are intentional re-run triggers; removing them stops geometry from rebuilding on appearance change.
useEffect(() => {
const nodes = useScene.getState().nodes
for (const node of Object.values(nodes)) {