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

Tenth themed mesh pack after camp / blacksmith / village /
temple / graveyard / garden / dock / tavern / mining.
Combat-training / gladiator-pit / militia-drill-yard scene
emitting a 7-primitive arena layout:

  • training-dummy — practice target
  • archery-target — range station
  • workbench — weapons-rack stand
  • crate-stack — gear storage
  • bench — audience seating
  • water-trough — between-bout refresh
  • hitching-rail — mount parking

Composite-pack catalogue: camp + blacksmith + village +
temple + graveyard + garden + dock + tavern + mining +
arena = 10 themed mesh packs. --list-packs surfaces 15
total composites including the pre-existing zone/project
starter packs.

Milestone: ten themed mesh packs covering the full life
cycle of a typical role-playing-game town from outdoor
camp to blacksmith forge to gladiator arena.
This commit is contained in:
Kelsi 2026-05-09 13:44:48 -07:00
parent 8a73324a5a
commit 574369bd97
3 changed files with 22 additions and 1 deletions

View file

@ -65,7 +65,7 @@ const char* const kArgRequired[] = {
"--gen-camp-pack", "--gen-blacksmith-pack", "--gen-village-pack",
"--gen-temple-pack", "--gen-graveyard-pack",
"--gen-garden-pack", "--gen-dock-pack", "--gen-tavern-pack",
"--gen-mining-pack",
"--gen-mining-pack", "--gen-arena-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

@ -7120,6 +7120,24 @@ int handleGenBlacksmithPack(int& i, int /*argc*/, char** argv) {
});
}
int handleGenArenaPack(int& i, int /*argc*/, char** argv) {
// Combat training / gladiator pit / militia drill yard scene:
// training-dummy (the practice target), archery-target (range
// station), workbench (weapons-rack stand), crate-stack
// (gear storage), bench (audience seating), water-trough
// (between-bout refresh), hitching-rail (mount parking).
std::string outDir = argv[++i];
return emitMeshPack(outDir, "arena pack", {
{"--gen-mesh-training-dummy", handleTrainingDummy, "dummy"},
{"--gen-mesh-archery-target", handleArcheryTarget, "target"},
{"--gen-mesh-workbench", handleWorkbench, "rack"},
{"--gen-mesh-crate-stack", handleCrateStack, "crates"},
{"--gen-mesh-bench", handleBench, "bench"},
{"--gen-mesh-water-trough", handleWaterTrough, "trough"},
{"--gen-mesh-hitching-rail", handleHitchingRail, "rail"},
});
}
int handleGenMiningPack(int& i, int /*argc*/, char** argv) {
// Mining shaft / quarry scene: gravel-pile (loose rubble),
// crate-stack (raw-ore cargo), mine-cart (underground
@ -7342,6 +7360,7 @@ constexpr MeshEntry kMeshTable[] = {
{"--gen-dock-pack", 1, handleGenDockPack},
{"--gen-tavern-pack", 1, handleGenTavernPack},
{"--gen-mining-pack", 1, handleGenMiningPack},
{"--gen-arena-pack", 1, handleGenArenaPack},
{"--gen-mesh-table", 1, handleTable},
{"--gen-mesh-lamppost", 1, handleLamppost},
{"--gen-mesh-bed", 1, handleBed},

View file

@ -336,6 +336,8 @@ void printUsage(const char* argv0) {
std::printf(" Convenience: emit house + chimney + table + bench + barrel + bookshelf + signpost into outDir\n");
std::printf(" --gen-mining-pack <outDir>\n");
std::printf(" Convenience: emit gravel-pile + crate-stack + mine-cart + pillar-row + lantern + workbench + hitching-post\n");
std::printf(" --gen-arena-pack <outDir>\n");
std::printf(" Convenience: emit training-dummy + archery-target + workbench + crate-stack + bench + water-trough + hitching-rail\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");