feat(editor): add --gen-garden-pack composite

Sixth themed mesh pack after camp / blacksmith / village /
temple / graveyard. Garden-courtyard scene emitting a
7-primitive monastery / kitchen-garden / small park layout:

  • pergola — vine-arbor frame
  • fountain — centerpiece
  • stone-bench — seating
  • shrine — decorative focal
  • beehive — productive prop
  • scarecrow — rural touch
  • well — water source

Together these form a recognizable contemplative-garden /
small park / monastery courtyard when arranged in a zone.

Composite-pack catalogue now: camp + blacksmith + village
+ temple + graveyard + garden = 6 themed mesh packs.
--list-packs surfaces 11 total composite flags.
This commit is contained in:
Kelsi 2026-05-09 13:01:21 -07:00
parent b74c369efd
commit b3755f8342
3 changed files with 23 additions and 0 deletions

View file

@ -61,6 +61,7 @@ const char* const kArgRequired[] = {
"--gen-mesh-hitching-rail",
"--gen-camp-pack", "--gen-blacksmith-pack", "--gen-village-pack",
"--gen-temple-pack", "--gen-graveyard-pack",
"--gen-garden-pack",
"--gen-mesh-table", "--gen-mesh-lamppost", "--gen-mesh-bed",
"--gen-mesh-ladder", "--gen-mesh-well", "--gen-mesh-signpost",
"--gen-mesh-mailbox", "--gen-mesh-tombstone", "--gen-mesh-crate",

View file

@ -6845,6 +6845,25 @@ int handleGenBlacksmithPack(int& i, int /*argc*/, char** argv) {
});
}
int handleGenGardenPack(int& i, int /*argc*/, char** argv) {
// Garden / courtyard scene: pergola (vine-arbor frame),
// fountain (centerpiece), stone-bench (seating), shrine
// (decorative focal), beehive (productive prop), scarecrow
// (rural touch), well (water source). Together these form
// a recognizable kitchen-garden / monastery courtyard /
// small park.
std::string outDir = argv[++i];
return emitMeshPack(outDir, "garden pack", {
{"--gen-mesh-pergola", handlePergola, "pergola"},
{"--gen-mesh-fountain", handleFountain, "fountain"},
{"--gen-mesh-stone-bench", handleStoneBench, "bench"},
{"--gen-mesh-shrine", handleShrine, "shrine"},
{"--gen-mesh-beehive", handleBeehive, "beehive"},
{"--gen-mesh-scarecrow", handleScarecrow, "scarecrow"},
{"--gen-mesh-well", handleWell, "well"},
});
}
int handleGenGraveyardPack(int& i, int /*argc*/, char** argv) {
// Cemetery / graveyard scene: grave (filled plot mound),
// tombstone (marker stone), coffin (above-ground or open),
@ -6980,6 +6999,7 @@ constexpr MeshEntry kMeshTable[] = {
{"--gen-village-pack", 1, handleGenVillagePack},
{"--gen-temple-pack", 1, handleGenTemplePack},
{"--gen-graveyard-pack", 1, handleGenGraveyardPack},
{"--gen-garden-pack", 1, handleGenGardenPack},
{"--gen-mesh-table", 1, handleTable},
{"--gen-mesh-lamppost", 1, handleLamppost},
{"--gen-mesh-bed", 1, handleBed},

View file

@ -296,6 +296,8 @@ void printUsage(const char* argv0) {
std::printf(" Convenience: emit altar + shrine + brazier + pillar + statue + portal + podium into outDir\n");
std::printf(" --gen-graveyard-pack <outDir>\n");
std::printf(" Convenience: emit grave + tombstone + coffin + statue + stone-bench + gravel-pile + cage into outDir\n");
std::printf(" --gen-garden-pack <outDir>\n");
std::printf(" Convenience: emit pergola + fountain + stone-bench + shrine + beehive + scarecrow + well into outDir\n");
std::printf(" --gen-mesh-table <wom-base> [width] [depth] [height] [legThick] [topThick]\n");
std::printf(" Table: flat top slab on 4 corner legs (default 1.6/1.0/0.85/0.10/0.06)\n");
std::printf(" --gen-mesh-lamppost <wom-base> [poleH] [poleT] [baseSize] [lanternSize] [lanternH]\n");