diff --git a/tools/editor/cli_audits.cpp b/tools/editor/cli_audits.cpp index bddee72c..559d3c1f 100644 --- a/tools/editor/cli_audits.cpp +++ b/tools/editor/cli_audits.cpp @@ -495,10 +495,13 @@ int handleAuditWatertightWob(int& i, int argc, char** argv) { // intentional portal openings between them. std::string root = argv[++i]; bool jsonOut = false; + bool summary = false; float weldEps = 1e-4f; while (i + 1 < argc && argv[i + 1][0] == '-') { if (std::strcmp(argv[i + 1], "--json") == 0) { jsonOut = true; ++i; + } else if (std::strcmp(argv[i + 1], "--summary") == 0) { + summary = true; ++i; } else if (std::strcmp(argv[i + 1], "--weld") == 0 && i + 2 < argc) { try { weldEps = std::stof(argv[i + 2]); } catch (...) {} i += 2; @@ -557,6 +560,14 @@ int handleAuditWatertightWob(int& i, int argc, char** argv) { std::printf("%s\n", j.dump(2).c_str()); return std::min(failCount, 255); } + if (summary) { + std::printf("watertight-wob: %s (%zu buildings, %d failure(s)) " + "[%s, weld %.6f]\n", + failCount == 0 ? "PASS" : "FAIL", + rows.size(), failCount, + root.c_str(), weldEps); + return std::min(failCount, 255); + } std::printf("Watertight WOB audit: %s (weld eps %.6f)\n", root.c_str(), weldEps); if (rows.empty()) { diff --git a/tools/editor/cli_help.cpp b/tools/editor/cli_help.cpp index 5735a6fd..3f8af045 100644 --- a/tools/editor/cli_help.cpp +++ b/tools/editor/cli_help.cpp @@ -593,8 +593,8 @@ void printUsage(const char* argv0) { std::printf(" Walk every .wom + .wob under zoneDir, weld each independently, append to one shared WOC\n"); std::printf(" --audit-watertight [--weld ] [--json] [--summary]\n"); std::printf(" Walk every .wom under root, run welded watertight check; --summary prints a one-line rollup\n"); - std::printf(" --audit-watertight-wob [--weld ] [--json]\n"); - std::printf(" Walk every .wob, check that EVERY group is closed (per-group weld) — interior rooms must be solid\n"); + std::printf(" --audit-watertight-wob [--weld ] [--json] [--summary]\n"); + std::printf(" Walk every .wob, check that EVERY group is closed (per-group weld); --summary prints one-line rollup\n"); std::printf(" --import-obj [wom-base]\n"); std::printf(" Convert a Wavefront OBJ back into WOM (round-trips with --export-obj)\n"); std::printf(" --export-wob-obj [out.obj]\n");