From 9bd9b50bdbb8d057bb044e16af0037a41d09e45b Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 9 May 2026 12:55:50 -0700 Subject: [PATCH] feat(editor): add --gen-graveyard-pack composite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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). --- tools/editor/cli_arg_required.cpp | 2 +- tools/editor/cli_gen_mesh.cpp | 20 ++++++++++++++++++++ tools/editor/cli_help.cpp | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/editor/cli_arg_required.cpp b/tools/editor/cli_arg_required.cpp index d1aa193d..2a7393cb 100644 --- a/tools/editor/cli_arg_required.cpp +++ b/tools/editor/cli_arg_required.cpp @@ -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", diff --git a/tools/editor/cli_gen_mesh.cpp b/tools/editor/cli_gen_mesh.cpp index 488b5b3a..2660dbc0 100644 --- a/tools/editor/cli_gen_mesh.cpp +++ b/tools/editor/cli_gen_mesh.cpp @@ -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}, diff --git a/tools/editor/cli_help.cpp b/tools/editor/cli_help.cpp index 86019add..4cfd34ae 100644 --- a/tools/editor/cli_help.cpp +++ b/tools/editor/cli_help.cpp @@ -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 \n"); std::printf(" Convenience: emit altar + shrine + brazier + pillar + statue + portal + podium into outDir\n"); + std::printf(" --gen-graveyard-pack \n"); + std::printf(" Convenience: emit grave + tombstone + coffin + statue + stone-bench + gravel-pile + cage into outDir\n"); std::printf(" --gen-mesh-table [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 [poleH] [poleT] [baseSize] [lanternSize] [lanternH]\n");