feat(editor): add --list-packs introspection + --gen-temple-pack

Two related changes:

  • --list-packs walks kArgRequired and surfaces every flag
    matching --gen-*-pack (excluding --gen-mesh-* and
    --gen-texture-* which are individual primitives). Sister
    command to --list-primitives. Auto-tracks new packs as
    they're added — no parallel registry.

  • --gen-temple-pack composite — temple/shrine ritual hall
    (altar + shrine + brazier + pillar + statue + portal +
    podium). Fourth themed mesh pack after camp / blacksmith /
    village.

list-packs now surfaces 9 composites including the pre-
existing zone-* / project-starter packs that match the
naming convention. All 7 temple-pack outputs validate clean.
This commit is contained in:
Kelsi 2026-05-09 12:51:10 -07:00
parent c18d88015a
commit 4e64f833a7
4 changed files with 50 additions and 0 deletions

View file

@ -6719,6 +6719,24 @@ int handleGenBlacksmithPack(int& i, int /*argc*/, char** argv) {
});
}
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
// altar), 2 pillars (flanking the altar approach), statue
// (deity figure), portal (entrance gateway). A full ritual
// hall in 7 primitives.
std::string outDir = argv[++i];
return emitMeshPack(outDir, "temple pack", {
{"--gen-mesh-altar", handleAltar, "altar"},
{"--gen-mesh-shrine", handleShrine, "shrine"},
{"--gen-mesh-brazier", handleBrazier, "brazier"},
{"--gen-mesh-pillar", handlePillar, "pillar"},
{"--gen-mesh-statue", handleStatue, "statue"},
{"--gen-mesh-portal", handlePortal, "portal"},
{"--gen-mesh-podium", handlePodium, "podium"},
});
}
int handleGenVillagePack(int& i, int /*argc*/, char** argv) {
// Village square scene: a small house, an outhouse beside it,
// a chimney for the house roof piece, a hitching post at the
@ -6813,6 +6831,7 @@ constexpr MeshEntry kMeshTable[] = {
{"--gen-camp-pack", 1, handleGenCampPack},
{"--gen-blacksmith-pack", 1, handleGenBlacksmithPack},
{"--gen-village-pack", 1, handleGenVillagePack},
{"--gen-temple-pack", 1, handleGenTemplePack},
{"--gen-mesh-table", 1, handleTable},
{"--gen-mesh-lamppost", 1, handleLamppost},
{"--gen-mesh-bed", 1, handleBed},