feat(editor): add --gen-mesh-bird-bath garden water-feature

77th procedural mesh primitive. Garden bird-bath:

  • stem: thin Y-axis closed cylinder (the column)
  • basin: wider shallow Y-axis closed cylinder on top

Both are full closed cylinders (side wall + ±Y cap fans) so
the model is a watertight solid. Local addYCylinder lambda
emits each tier — keeps the per-handler code self-contained
without forcing yet another module-level helper.

Distinct from --gen-mesh-fountain (basin + spout column,
larger water feature) — bird-bath is the small ornamental
garden version. Useful for monastery courtyards, druid
sanctuaries, noble-house pleasure gardens, sanctuary
clearings, ranger huts.

Watertight under weld (verified 192 manifold edges, 0
boundary, 0 non-manifold).
This commit is contained in:
Kelsi 2026-05-09 13:16:06 -07:00
parent 2a5198df42
commit 234cfd0663
3 changed files with 102 additions and 1 deletions

View file

@ -296,6 +296,8 @@ void printUsage(const char* argv0) {
std::printf(" Pillar row: N evenly-spaced rectangular pillars with optional square caps (colonnade / temple ruin)\n");
std::printf(" --gen-mesh-statue-base <wom-base> [bodyW] [bodyH] [plinthExtra] [plinthH] [capitalExtra] [capitalH]\n");
std::printf(" Statue base: 3-tier pedestal (plinth + body + capital) for monuments / hero memorials\n");
std::printf(" --gen-mesh-bird-bath <wom-base> [stemR] [stemH] [basinR] [basinH] [sides]\n");
std::printf(" Bird bath: thin cylindrical stem topped by a wide shallow basin disc (small garden water feature)\n");
std::printf(" --gen-camp-pack <outDir>\n");
std::printf(" Convenience: emit tent + firepit + bedroll + canopy + woodpile + haystack into outDir as 6 .wom files\n");
std::printf(" --gen-blacksmith-pack <outDir>\n");