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

Seventh themed mesh pack after camp / blacksmith / village /
temple / graveyard / garden. Harbor / dockyard scene
emitting a 7-primitive port-side layout:

  • dock — the pier itself
  • crate-stack — cargo waiting to be loaded
  • barrel — sailor stash
  • canopy — shade for the dockmaster's station
  • bench — passenger waiting area
  • signpost — port marker
  • hitching-post — for tying up small boats / mounts

Together these form a recognizable harbor / dockside
pickup-and-drop area when arranged in a zone.

Composite-pack catalogue: camp + blacksmith + village +
temple + graveyard + garden + dock = 7 themed mesh packs.
This commit is contained in:
Kelsi 2026-05-09 13:06:37 -07:00
parent 074f299c8b
commit bdeb93bedd
3 changed files with 22 additions and 1 deletions

View file

@ -61,7 +61,7 @@ const char* const kArgRequired[] = {
"--gen-mesh-hitching-rail", "--gen-mesh-pillar-row",
"--gen-camp-pack", "--gen-blacksmith-pack", "--gen-village-pack",
"--gen-temple-pack", "--gen-graveyard-pack",
"--gen-garden-pack",
"--gen-garden-pack", "--gen-dock-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

@ -6906,6 +6906,24 @@ int handleGenBlacksmithPack(int& i, int /*argc*/, char** argv) {
});
}
int handleGenDockPack(int& i, int /*argc*/, char** argv) {
// Harbor / dockyard scene: dock (the pier itself), crate-
// stack (cargo waiting to be loaded), barrel (sailor stash),
// canopy (shade for the dockmaster's station), bench (waiting
// area for passengers), signpost (port marker), hitching-post
// (for tying up small boats / mounts arriving with goods).
std::string outDir = argv[++i];
return emitMeshPack(outDir, "dock pack", {
{"--gen-mesh-dock", handleDock, "dock"},
{"--gen-mesh-crate-stack", handleCrateStack, "crates"},
{"--gen-mesh-barrel", handleBarrel, "barrel"},
{"--gen-mesh-canopy", handleCanopy, "canopy"},
{"--gen-mesh-bench", handleBench, "bench"},
{"--gen-mesh-signpost", handleSignpost, "signpost"},
{"--gen-mesh-hitching-post", handleHitchingPost, "hitching"},
});
}
int handleGenGardenPack(int& i, int /*argc*/, char** argv) {
// Garden / courtyard scene: pergola (vine-arbor frame),
// fountain (centerpiece), stone-bench (seating), shrine
@ -7062,6 +7080,7 @@ constexpr MeshEntry kMeshTable[] = {
{"--gen-temple-pack", 1, handleGenTemplePack},
{"--gen-graveyard-pack", 1, handleGenGraveyardPack},
{"--gen-garden-pack", 1, handleGenGardenPack},
{"--gen-dock-pack", 1, handleGenDockPack},
{"--gen-mesh-table", 1, handleTable},
{"--gen-mesh-lamppost", 1, handleLamppost},
{"--gen-mesh-bed", 1, handleBed},

View file

@ -302,6 +302,8 @@ void printUsage(const char* argv0) {
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-dock-pack <outDir>\n");
std::printf(" Convenience: emit dock + crate-stack + barrel + canopy + bench + signpost + hitching-post 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");