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

Fifth themed mesh pack after camp / blacksmith / village /
temple. Cemetery scene emitting a 7-primitive burial yard:

  • grave — filled plot mound
  • tombstone — marker stone
  • coffin — above-ground or open
  • statue — mourning angel / patron deity
  • stone-bench — for visitors and mourners
  • gravel-pile — loose earth from a fresh dig
  • cage — fence section / mausoleum gate

Together these form the standard town-edge burial yard
when arranged in a zone. Composite-pack catalogue now:
camp + blacksmith + village + temple + graveyard.

All 7 outputs validate clean. --list-packs surfaces 10
composite flags total (5 mesh packs + the pre-existing
zone/project starter packs).
This commit is contained in:
Kelsi 2026-05-09 12:55:50 -07:00
parent 85e02a6132
commit 9bd9b50bdb
3 changed files with 23 additions and 1 deletions

View file

@ -59,7 +59,7 @@ const char* const kArgRequired[] = {
"--gen-mesh-archery-target", "--gen-mesh-gravel-pile",
"--gen-mesh-stone-bench", "--gen-mesh-mine-cart",
"--gen-camp-pack", "--gen-blacksmith-pack", "--gen-village-pack",
"--gen-temple-pack",
"--gen-temple-pack", "--gen-graveyard-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

@ -6791,6 +6791,25 @@ int handleGenBlacksmithPack(int& i, int /*argc*/, char** argv) {
});
}
int handleGenGraveyardPack(int& i, int /*argc*/, char** argv) {
// Cemetery / graveyard scene: grave (filled plot mound),
// tombstone (marker stone), coffin (above-ground or open),
// statue (mourning angel / patron deity), stone-bench (for
// visitors), gravel-pile (loose earth from a fresh dig),
// cage (cemetery-fence section / mausoleum gate). Together
// these form the standard town-edge burial yard.
std::string outDir = argv[++i];
return emitMeshPack(outDir, "graveyard pack", {
{"--gen-mesh-grave", handleGrave, "grave"},
{"--gen-mesh-tombstone", handleTombstone, "tombstone"},
{"--gen-mesh-coffin", handleCoffin, "coffin"},
{"--gen-mesh-statue", handleStatue, "statue"},
{"--gen-mesh-stone-bench", handleStoneBench, "bench"},
{"--gen-mesh-gravel-pile", handleGravelPile, "rubble"},
{"--gen-mesh-cage", handleCage, "fence"},
});
}
int handleGenTemplePack(int& i, int /*argc*/, char** argv) {
// Temple / shrine scene: altar (the focal point), shrine
// (auxiliary devotional), brazier (lit on either side of the
@ -6905,6 +6924,7 @@ constexpr MeshEntry kMeshTable[] = {
{"--gen-blacksmith-pack", 1, handleGenBlacksmithPack},
{"--gen-village-pack", 1, handleGenVillagePack},
{"--gen-temple-pack", 1, handleGenTemplePack},
{"--gen-graveyard-pack", 1, handleGenGraveyardPack},
{"--gen-mesh-table", 1, handleTable},
{"--gen-mesh-lamppost", 1, handleLamppost},
{"--gen-mesh-bed", 1, handleBed},

View file

@ -290,6 +290,8 @@ void printUsage(const char* argv0) {
std::printf(" Convenience: emit house + outhouse + chimney + hitching-post + well + signpost + haystack into outDir\n");
std::printf(" --gen-temple-pack <outDir>\n");
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-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");