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
@@ -14,6 +14,7 @@ import type { TurbineVentNode } from './schema'
* doesn't intercept the cursor ray feeding the placement tool.
*/
const TurbineVentPreview = ({ node, invalid }: { node: TurbineVentNode; invalid?: boolean }) => {
// biome-ignore lint/correctness/useExhaustiveDependencies: deps deliberately list the build inputs; depending on the whole object would rebuild on unrelated field changes.
const geometry = useMemo(
() => buildTurbineVentGeometry(node),
[node.style, node.diameter, node.height, node.neckHeight, node.vaneCount, node.baseOverhang],
@@ -65,10 +65,12 @@ const TurbineVentRenderer = ({ node: storeNode }: { node: TurbineVentNode }) =>
: undefined,
)
// biome-ignore lint/correctness/useExhaustiveDependencies: deps deliberately list the build inputs; depending on the whole object would rebuild on unrelated field changes.
const baseGeometry = useMemo(
() => buildTurbineVentBase(node),
[node.diameter, node.height, node.neckHeight, node.baseOverhang],
)
// biome-ignore lint/correctness/useExhaustiveDependencies: deps deliberately list the build inputs; depending on the whole object would rebuild on unrelated field changes.
const headGeometry = useMemo(
() => buildTurbineVentHead(node),
[node.style, node.diameter, node.height, node.neckHeight, node.vaneCount],