(dt: number)
| 133 | |
| 134 | // SlabSystem (priority 1) — generates slab geometry for dirty slabs |
| 135 | function slabSystem(dt: number): void { |
| 136 | for (const id of dirtyNodes) { |
| 137 | const node = nodes.get(id); |
| 138 | if (!node || node.type !== 'slab') continue; |
| 139 | |
| 140 | const handle = ensureSceneNode(id); |
| 141 | const slab = node as SlabNode; |
| 142 | |
| 143 | // Flatten polygon for extrusion |
| 144 | const flat: number[] = []; |
| 145 | for (const [x, z] of slab.polygon) { |
| 146 | flat.push(x); |
| 147 | flat.push(z); |
| 148 | } |
| 149 | |
| 150 | // Extrude polygon to create slab |
| 151 | extrudePolygon(handle, flat, slab.elevation); |
| 152 | |
| 153 | // Gray floor material |
| 154 | setSceneNodeColor(handle, 0.75, 0.75, 0.70, 1.0); |
| 155 | setSceneNodePbr(handle, 0.6, 0.0); |
| 156 | |
| 157 | clearDirty(id); |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | // WallSystem (priority 4) — generates wall geometry with door cutouts |
| 162 | function wallSystem(dt: number): void { |
nothing calls this directly
no test coverage detected