feat(editor): add --gen-mesh-candle wax-pillar primitive

80th procedural mesh primitive. Wax pillar candle:

  • saucer (optional) — wider shallow disc base, the drip
    catcher that sits on the table
  • wax — thin tall pillar standing on the saucer (or
    directly on the ground if saucerR=0)

Uses the addClosedCylinderY helper for both pieces — same
two-cylinder pattern as --gen-mesh-bird-bath but with a
much skinnier upper cylinder. The 81-line handler is
mostly arg parsing + validation; geometry is just two
helper calls.

Useful for chapels / shrines, vigil scenes, witch-hut
ritual surfaces, alchemist labs, séance tables, festival-
of-lights ground decoration. Set saucerR=0 for a plain
candle without the saucer (e.g. for stack-them-on-a-cake
contexts).

Watertight under weld (verified — wax + saucer are two
independent closed cylinders).

Milestone: now at 80 procedural mesh primitives.
This commit is contained in:
Kelsi 2026-05-09 13:32:43 -07:00
parent 74b8795aa3
commit b47649b078
3 changed files with 53 additions and 1 deletions

View file

@ -60,7 +60,7 @@ const char* const kArgRequired[] = {
"--gen-mesh-stone-bench", "--gen-mesh-mine-cart",
"--gen-mesh-hitching-rail", "--gen-mesh-pillar-row",
"--gen-mesh-statue-base", "--gen-mesh-bird-bath",
"--gen-mesh-planter-box", "--gen-mesh-urn",
"--gen-mesh-planter-box", "--gen-mesh-urn", "--gen-mesh-candle",
"--gen-camp-pack", "--gen-blacksmith-pack", "--gen-village-pack",
"--gen-temple-pack", "--gen-graveyard-pack",
"--gen-garden-pack", "--gen-dock-pack", "--gen-tavern-pack",