village.geo
The mesh lathe Lanternwake is cut on.
A builder accumulates triangles into one stream per material, in world space,
behind a transform stack — so a cottage is authored in its own local
coordinates and lands in the fen facing the lane, and a shutter authored on the
cottage's wall rides the cottage's placement. When the village has been written
realise() hands back one merged runtime mesh per material.
Primitives: quad, tri, obb (a box from three half-extent vectors), box,
boxOn, beam (a box between two points, for braces, rafters and rails),
cylinder, spire (cone or pyramid), slab, gableRoof and gableEnd.
Winding is counter-clockwise-front throughout: every face is emitted so that
(b - a) x (d - a) points out of the solid. audit() counts the triangles
whose geometric normal disagrees with the normal written for them, so the claim
is measured rather than eyeballed — an inverted face in fog just reads as "a
bit dark", which is why the count exists.
Scoped to this part · feeds back into the world's score.