2026-05-09 10:08:14 -07:00
|
|
|
#include "cli_arg_required.hpp"
|
|
|
|
|
|
|
|
|
|
namespace wowee {
|
|
|
|
|
namespace editor {
|
|
|
|
|
namespace cli {
|
|
|
|
|
|
|
|
|
|
const char* const kArgRequired[] = {
|
|
|
|
|
"--data", "--info", "--info-batches", "--info-textures", "--info-doodads",
|
|
|
|
|
"--info-attachments", "--info-particles", "--info-sequences",
|
|
|
|
|
"--info-bones", "--export-bones-dot",
|
|
|
|
|
"--list-zone-meshes", "--list-zone-audio", "--list-zone-textures",
|
|
|
|
|
"--list-project-meshes", "--list-project-audio",
|
|
|
|
|
"--list-project-textures",
|
|
|
|
|
"--info-zone-models-total", "--info-project-models-total",
|
|
|
|
|
"--list-zone-meshes-detail", "--list-project-meshes-detail", "--info-mesh",
|
2026-05-09 10:41:58 -07:00
|
|
|
"--info-mesh-storage-budget", "--info-mesh-stats",
|
2026-05-09 10:57:22 -07:00
|
|
|
"--info-wob", "--info-wob-stats", "--info-woc", "--info-wot",
|
feat(pipeline): add WOL validation + time-of-day sampling
Three additions to the Wowee Open Light format that landed
last commit:
• WoweeLightLoader::sampleAtTime(light, timeMin) returns
the linearly-interpolated keyframe at any time-of-day,
correctly handling wrap-around between the last keyframe
and the first (e.g. 21:00 blends from dusk toward
midnight by going forward through 00:00).
• --validate-wol <wol-base> [--json] walks every keyframe
and reports structural problems: time bounds (must be
[0, 1440)), strict-ascending sort order, fogEnd >
fogStart, finite color components. Exit code 0 PASS /
1 FAIL — CI-friendly.
• --info-wol-at <wol-base> <HH:MM|minutes> samples the
interpolated state at a specific time of day. Useful
for previewing what the renderer would feed in at a
given moment, debugging keyframe gaps, or previewing
a sub-range of the cycle.
Smoke-tested: dawn-to-midnight blend at 03:00 yields a
plausible mid-fade ambient (0.18, 0.16, 0.15) and dusk-to-
midnight wrap at 21:00 yields the symmetric (0.19, 0.145,
0.14). The default 4-keyframe day/night cycle from
makeDefaultDayNight passes --validate-wol cleanly.
2026-05-09 13:54:57 -07:00
|
|
|
"--info-wol", "--info-wol-at", "--validate-wol", "--gen-light",
|
2026-05-09 14:01:26 -07:00
|
|
|
"--gen-light-cave", "--gen-light-dungeon", "--gen-light-night",
|
2026-05-09 14:18:14 -07:00
|
|
|
"--export-wol-json", "--import-wol-json",
|
2026-05-09 14:25:41 -07:00
|
|
|
"--export-wow-json", "--import-wow-json",
|
2026-05-09 14:13:30 -07:00
|
|
|
"--info-wow", "--validate-wow",
|
2026-05-09 14:34:22 -07:00
|
|
|
"--validate-wom",
|
2026-05-09 14:38:05 -07:00
|
|
|
"--gen-world-map", "--gen-world-map-instance",
|
|
|
|
|
"--gen-world-map-arena",
|
|
|
|
|
"--info-womx", "--validate-womx",
|
feat(editor): add WOMX JSON round-trip authoring workflow
Mirrors the WOL/WOW JSON pair from earlier batches: gives
hand-editable access to .womx world-map manifests for
quick tile-bitmap edits without writing a binary patcher.
Tile bitmap is represented as a JSON array of '1'/'0' row
strings — one string per row of the grid. Visual layout
makes missing-row patterns obvious at a glance:
"tiles": [
"10000001",
"01000010",
"00100100",
"00011000",
...
]
Sparse [[x,y]] pair arrays were considered but rejected:
4× larger for a full continent (4096 tiles), and the dense
visual layout is far easier to spot-read for typical
edits like "carve out a hole in this region".
The importer tolerates missing optional fields (uses
WoweeWorldMap defaults), and accepts either worldType
int or worldTypeName string so JSON can be authored by
hand or by tools.
Verified byte-identical round-trip on a 4x4 instance and
a hand-authored 8x8 sparse continent (16/64 tiles, both
defaultLightId and defaultWeatherId preserved through the
JSON layer).
Adds 2 flags to reach 458 documented kArgRequired entries.
All 9 open formats now have established CLI tooling — WOM,
WOB, WOC, WOT, JsonDBC, PNG, WOL, WOW, and WOMX.
2026-05-09 14:39:47 -07:00
|
|
|
"--export-womx-json", "--import-womx-json",
|
feat(pipeline): add WSND (Wowee Sound Catalog) format
Novel open replacement for Blizzard's SoundEntries.dbc +
SoundEntriesAdvanced.dbc. The 10th open format added to the
editor — covers the audio-metadata gap (the previous 9 cover
geometry, terrain, atmosphere, and world manifests, but no
sound metadata).
Format:
• magic "WSND", version 1, little-endian
• catalogName + entry count
• per entry: soundId / kind / flags / volume /
minDistance / maxDistance / filePath / label
Kind enum (7 categories):
sfx, music, ambient, ui, voice, spell, combat
Flags packed (3 bits used, rest reserved):
loop (0x01), 3d (0x02), stream (0x04)
API: WoweeSoundLoader::save / load / exists; presets
makeStarter (one entry per kind), makeAmbient (wilderness
loops + footsteps), makeTavern (fire + crowd + drink + door
+ lute).
CLI added (5 flags, 465 documented total now):
--gen-sound-catalog <base> [name]
--gen-sound-catalog-ambient <base> [name]
--gen-sound-catalog-tavern <base> [name]
--info-wsnd <base> [--json]
--validate-wsnd <base> [--json]
Validator catches: out-of-range kind, NaN/inf volume or
distances, 3D sounds with bad min/max, duplicate sound IDs,
empty filePaths.
All 3 presets verified: save / load / validate clean
on first run. Variable-length string fields use length-
prefixed encoding with a 1 MiB sanity cap on read to
prevent corrupted-file allocation blowups.
2026-05-09 14:47:16 -07:00
|
|
|
"--gen-sound-catalog", "--gen-sound-catalog-ambient",
|
|
|
|
|
"--gen-sound-catalog-tavern",
|
|
|
|
|
"--info-wsnd", "--validate-wsnd",
|
feat(editor): add WSND JSON round-trip authoring workflow
Closes the WSND open-format loop with --export-wsnd-json /
--import-wsnd-json, mirroring the WOL/WOW/WOMX JSON pairs
from earlier batches.
Each entry round-trips all 9 fields:
soundId, kind (int + kindName string), flags (int +
flagsList string array), volume, minDistance, maxDistance,
filePath, label.
Both kind and flags are emitted in dual form (int + named):
• kind : 2,
kindName : "ambient",
• flags : 3,
flagsList: ["loop", "3d"]
The importer accepts either form per field, so a hand-author
can write only the named string forms and skip the integer
boilerplate. Missing optional fields fall back to
WoweeSound::Entry defaults.
Verified byte-identical round-trip on the tavern preset
(5 entries with mixed flags and 3D distances).
Adds 2 flags (467 kArgRequired entries total). All 4 binary
formats added in recent batches now have full JSON round-trip:
WOL, WOW, WOMX, WSND.
2026-05-09 14:51:44 -07:00
|
|
|
"--export-wsnd-json", "--import-wsnd-json",
|
feat(pipeline): add WSPN (Wowee Spawn Point catalog) format
Novel open replacement for AzerothCore-style scattered
creature_template / gameobject SQL spawn tables PLUS the
ADT MDDF / MODF doodad-placement chunks. The 11th open
format, and the first that covers the live world-content
side (atmosphere + sounds + spawns now form the runtime
"what fills this zone" picture).
A WSPN file holds all spawn points for a zone in a single
table, with kind discriminating creature vs game object
vs static doodad. The same format powers:
• server runtime — knows what NPCs / objects to spawn
• editor — draws spawn markers
• renderer — reads the doodad subset directly to
draw static props without going
through a server roundtrip
Format:
• magic "WSPN", version 1, little-endian
• per entry: kind / entryId / position(3f) / rotation(3f)
/ scale / flags / respawnSec / factionId /
questIdRequired / wanderRadius / label
Flags packed: disabled (0x01), event-only (0x02),
quest-phased (0x04). Reserved bits for future per-entry
encoding extensions.
API: WoweeSpawnsLoader::save / load / exists; presets
makeStarter (1 each kind), makeCamp (4-bandit ring +
chest + 2 tents), makeVillage (6 NPCs + 2 signs + 4
corner trees).
CLI added (5 flags, 473 documented total now):
--gen-spawns / --gen-spawns-camp / --gen-spawns-village
--info-wspn / --validate-wspn
Validator catches: out-of-range kind, NaN/inf coords,
non-positive scale, doodad with non-zero respawn (static
prop misuse), creature with respawn=0 (won't respawn after
kill), entryId=0 (orphan reference).
All 3 presets save / load / re-validate clean. Doodad and
game-object entries explicitly set wanderRadius=0 so the
generated catalogs are noise-free.
2026-05-09 14:57:53 -07:00
|
|
|
"--gen-spawns", "--gen-spawns-camp", "--gen-spawns-village",
|
|
|
|
|
"--info-wspn", "--validate-wspn",
|
2026-05-09 14:13:30 -07:00
|
|
|
"--gen-weather-temperate", "--gen-weather-arctic",
|
feat(pipeline): add Wowee Open Weather (.wow) zone schedule
8th open-format addition to the Wowee pipeline. Replaces
WoW's WeatherTypes.dbc / WeatherEffect logic with a single
binary file holding a list of weather states for one zone,
each tagged with intensity bounds, a probability weight,
and duration bounds. The renderer / runtime samples one
entry at a time using weighted-random selection, drives
it for a uniform-random duration in [min, max] sec, then
re-rolls.
• Types: Clear / Rain / Snow / Storm / Sandstorm / Fog /
Blizzard (extensible enum).
• Binary format: magic "WOWA", version 1, name, N entries
each storing (typeId, minIntensity, maxIntensity, weight,
minDurationSec, maxDurationSec).
CLI:
• --info-wow <wow-base> [--json] — inspect a WOW
• --gen-weather-temperate — clear + rain + fog (forest)
• --gen-weather-arctic — snow + blizzard + fog (tundra)
• --gen-weather-desert — clear + sandstorm (dunes)
• --gen-weather-stormy — rain + storm + occasional clear
The 8th open format complementing the rest:
M2 → WOM | WMO → WOB | WMO collision → WOC | ADT → WOT
DBC → JsonDBC | BLP → PNG | Light.dbc → WOL | WeatherTypes.dbc → WOW
Smoke-tested all 4 presets + JSON output. Each preset reads
back identically with the expected entry count and weight
distribution.
2026-05-09 14:10:13 -07:00
|
|
|
"--gen-weather-desert", "--gen-weather-stormy",
|
2026-05-09 14:21:55 -07:00
|
|
|
"--gen-zone-atmosphere",
|
2026-05-09 10:08:14 -07:00
|
|
|
"--info-creatures", "--info-objects", "--info-quests",
|
|
|
|
|
"--info-extract", "--info-extract-tree", "--info-extract-budget",
|
|
|
|
|
"--list-missing-sidecars",
|
|
|
|
|
"--info-png", "--info-jsondbc", "--info-blp", "--info-pack-budget",
|
|
|
|
|
"--info-pack-tree",
|
|
|
|
|
"--info-m2", "--info-wmo", "--info-adt",
|
|
|
|
|
"--info-zone", "--info-zone-overview", "--info-project-overview",
|
|
|
|
|
"--copy-project", "--info-wcp", "--list-wcp",
|
|
|
|
|
"--list-creatures", "--list-objects", "--list-quests",
|
|
|
|
|
"--list-quest-objectives", "--list-quest-rewards",
|
|
|
|
|
"--info-creature", "--info-quest", "--info-object",
|
|
|
|
|
"--info-quest-graph-stats",
|
|
|
|
|
"--info-creatures-by-faction", "--info-creatures-by-level",
|
|
|
|
|
"--info-objects-by-path", "--info-objects-by-type",
|
|
|
|
|
"--info-quests-by-level", "--info-quests-by-xp",
|
|
|
|
|
"--unpack-wcp", "--pack-wcp",
|
|
|
|
|
"--validate", "--validate-wom", "--validate-wob", "--validate-woc",
|
|
|
|
|
"--validate-whm", "--validate-all", "--validate-project",
|
|
|
|
|
"--validate-project-open-only", "--audit-project", "--bench-audit-project",
|
|
|
|
|
"--bench-validate-project", "--bench-bake-project",
|
|
|
|
|
"--bench-migrate-data-tree", "--list-data-tree-largest",
|
|
|
|
|
"--export-data-tree-md", "--gen-texture", "--gen-mesh", "--gen-mesh-textured",
|
|
|
|
|
"--add-texture-to-mesh", "--add-texture-to-zone",
|
|
|
|
|
"--gen-mesh-stairs", "--gen-mesh-grid", "--gen-mesh-disc",
|
|
|
|
|
"--gen-mesh-tube", "--gen-mesh-capsule", "--gen-mesh-arch",
|
|
|
|
|
"--gen-mesh-pyramid", "--gen-mesh-fence", "--gen-mesh-tree",
|
|
|
|
|
"--gen-mesh-rock", "--gen-mesh-pillar", "--gen-mesh-bridge",
|
|
|
|
|
"--gen-mesh-tower", "--gen-mesh-house", "--gen-mesh-fountain",
|
|
|
|
|
"--gen-mesh-statue", "--gen-mesh-altar", "--gen-mesh-portal",
|
|
|
|
|
"--gen-mesh-archway", "--gen-mesh-barrel", "--gen-mesh-chest",
|
|
|
|
|
"--gen-mesh-anvil", "--gen-mesh-mushroom", "--gen-mesh-cart",
|
|
|
|
|
"--gen-mesh-banner", "--gen-mesh-grave", "--gen-mesh-bench",
|
|
|
|
|
"--gen-mesh-shrine", "--gen-mesh-totem", "--gen-mesh-cage",
|
|
|
|
|
"--gen-mesh-throne", "--gen-mesh-coffin", "--gen-mesh-bookshelf",
|
2026-05-09 10:47:21 -07:00
|
|
|
"--gen-mesh-tent", "--gen-mesh-firepit", "--gen-mesh-woodpile",
|
2026-05-09 11:17:28 -07:00
|
|
|
"--gen-mesh-canopy", "--gen-mesh-haystack", "--gen-mesh-dock",
|
2026-05-09 11:39:33 -07:00
|
|
|
"--gen-mesh-pergola", "--gen-mesh-chimney", "--gen-mesh-bedroll",
|
2026-05-09 11:52:20 -07:00
|
|
|
"--gen-mesh-workbench", "--gen-mesh-crate-stack",
|
2026-05-09 12:02:35 -07:00
|
|
|
"--gen-mesh-watchpost", "--gen-mesh-water-trough",
|
feat(editor): add --gen-mesh-hitching-post stable fixture
67th procedural mesh primitive. Standard town/stable
hitching post:
• two vertical posts separated by `span`
• horizontal cross-bar at upper-post height (length =
span - postW so it tucks INSIDE the post inner faces,
matching real fence joinery)
• optional decorative caps on each post — set capH=0
for a bare working-yard post
All axis-aligned boxes, exercises every shared helper
(stripExt, initWomDefaults, addFlatBox,
finalizeAsSingleBatch, saveWomOrError). Watertight under
weld (verified 90 manifold edges, 0 boundary, 0
non-manifold).
Useful for stables, taverns with mount parking, town
squares, frontier outposts, ranger camps, post-and-rail
fence segments.
2026-05-09 12:15:41 -07:00
|
|
|
"--gen-mesh-training-dummy", "--gen-mesh-hitching-post",
|
2026-05-09 12:29:09 -07:00
|
|
|
"--gen-mesh-outhouse", "--gen-mesh-forge",
|
feat(editor): add --gen-mesh-gravel-pile rubble heap
71st procedural mesh primitive. Hash-distributed pile of
stone cubes in a roughly conical heap. Each stone gets:
• polar position (radial, theta) with sqrt(rand) on radial
so stones aren't bunched at center
• height limited by yMax = pileH * (1 - radial/baseR), so
larger / more numerous stones land near the base and
smaller ones perch on top — natural gravel-pile profile
• size in the 40-100% range of maxStoneSize
The second multi-box "scene" composite primitive (after
--gen-mesh-crate-stack), but using irregular hashed
placement instead of a regular N×M×K grid. Deterministic
from seed: re-running with same args reproduces the
identical pile.
Useful for mine entrances, construction sites, quarries,
ruined walls, abandoned-fort rubble, pirate-cove stash
mounds. Default 24 stones at 0.6 m base radius gives a
reasonable medium-pile.
Uses every shared helper introduced this batch (printWomWrote,
printWomMeshStats, setCenteredBoundsXZ, addFlatBox,
saveWomOrError, parseOpt*, stripExt).
2026-05-09 12:43:03 -07:00
|
|
|
"--gen-mesh-archery-target", "--gen-mesh-gravel-pile",
|
2026-05-09 12:54:17 -07:00
|
|
|
"--gen-mesh-stone-bench", "--gen-mesh-mine-cart",
|
2026-05-09 13:04:55 -07:00
|
|
|
"--gen-mesh-hitching-rail", "--gen-mesh-pillar-row",
|
2026-05-09 13:16:06 -07:00
|
|
|
"--gen-mesh-statue-base", "--gen-mesh-bird-bath",
|
2026-05-09 13:32:43 -07:00
|
|
|
"--gen-mesh-planter-box", "--gen-mesh-urn", "--gen-mesh-candle",
|
2026-05-09 13:42:58 -07:00
|
|
|
"--gen-mesh-lantern", "--gen-mesh-chalice",
|
2026-05-09 13:58:22 -07:00
|
|
|
"--gen-mesh-standing-torch", "--gen-mesh-scroll-case",
|
2026-05-09 14:23:23 -07:00
|
|
|
"--gen-mesh-stove", "--gen-mesh-well-pail",
|
2026-05-09 14:43:21 -07:00
|
|
|
"--gen-mesh-mug", "--gen-mesh-mortar-pestle",
|
2026-05-09 12:45:25 -07:00
|
|
|
"--gen-camp-pack", "--gen-blacksmith-pack", "--gen-village-pack",
|
2026-05-09 12:55:50 -07:00
|
|
|
"--gen-temple-pack", "--gen-graveyard-pack",
|
2026-05-09 13:17:49 -07:00
|
|
|
"--gen-garden-pack", "--gen-dock-pack", "--gen-tavern-pack",
|
2026-05-09 13:44:48 -07:00
|
|
|
"--gen-mining-pack", "--gen-arena-pack",
|
feat(editor): add --gen-kitchen-pack composite (11th themed pack)
Tavern back-of-house / cookhouse scene composite. Pairs
naturally with --gen-tavern-pack (front-of-house common
room) for a complete inn setup.
Emits 7 .wom files into outDir:
• stove — pot-bellied cookfire stove
• cauldron — large hanging pot
• prep-table — flat work surface
• stool — cook's seat
• barrel — water / ale / flour storage
• mug — drink ready for the inn customer
• mortar — herb / spice grinding tool
This is the 11th themed pack (camp, blacksmith, village,
temple, graveyard, garden, dock, tavern, mining, arena,
kitchen). Notable for being the first pack that uses the
two recently-added drinking-vessel + alchemy primitives
(mug from batch 111, mortar-pestle from batch 113), proving
out the "build small primitives, then compose into themed
packs" workflow.
All 7 emitted primitives pass --validate-wom on first
generation. 468 kArgRequired entries total.
2026-05-09 14:53:01 -07:00
|
|
|
"--gen-kitchen-pack",
|
2026-05-09 10:08:14 -07:00
|
|
|
"--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",
|
|
|
|
|
"--gen-mesh-stool", "--gen-mesh-cauldron", "--gen-mesh-gate",
|
|
|
|
|
"--gen-mesh-beehive", "--gen-mesh-weathervane",
|
|
|
|
|
"--gen-mesh-scarecrow", "--gen-mesh-sundial",
|
2026-05-09 10:11:24 -07:00
|
|
|
"--gen-mesh-podium", "--gen-mesh-brazier", "--gen-mesh-archway-double",
|
2026-05-09 10:08:14 -07:00
|
|
|
"--gen-texture-gradient",
|
|
|
|
|
"--gen-mesh-from-heightmap", "--export-mesh-heightmap",
|
|
|
|
|
"--displace-mesh",
|
|
|
|
|
"--scale-mesh", "--translate-mesh", "--strip-mesh",
|
|
|
|
|
"--gen-texture-noise", "--gen-texture-noise-color", "--rotate-mesh",
|
|
|
|
|
"--center-mesh", "--flip-mesh-normals", "--mirror-mesh",
|
|
|
|
|
"--smooth-mesh-normals",
|
|
|
|
|
"--merge-meshes",
|
|
|
|
|
"--gen-texture-radial", "--gen-texture-stripes", "--gen-texture-dots",
|
|
|
|
|
"--gen-texture-rings", "--gen-texture-checker", "--gen-texture-brick",
|
|
|
|
|
"--gen-texture-wood", "--gen-texture-grass", "--gen-texture-fabric",
|
|
|
|
|
"--gen-texture-cobble", "--gen-texture-marble", "--gen-texture-metal",
|
|
|
|
|
"--gen-texture-leather", "--gen-texture-sand", "--gen-texture-snow",
|
|
|
|
|
"--gen-texture-lava", "--gen-texture-tile", "--gen-texture-bark",
|
|
|
|
|
"--gen-texture-clouds", "--gen-texture-stars", "--gen-texture-vines",
|
|
|
|
|
"--gen-texture-mosaic", "--gen-texture-rust", "--gen-texture-circuit",
|
|
|
|
|
"--gen-texture-coral", "--gen-texture-flame", "--gen-texture-tartan",
|
|
|
|
|
"--gen-texture-argyle", "--gen-texture-herringbone",
|
|
|
|
|
"--gen-texture-scales", "--gen-texture-stained-glass",
|
|
|
|
|
"--gen-texture-shingles", "--gen-texture-frost",
|
|
|
|
|
"--gen-texture-parquet", "--gen-texture-bubbles",
|
|
|
|
|
"--gen-texture-spider-web", "--gen-texture-gingham",
|
|
|
|
|
"--gen-texture-lattice", "--gen-texture-honeycomb",
|
|
|
|
|
"--gen-texture-cracked", "--gen-texture-runes",
|
|
|
|
|
"--gen-texture-leopard", "--gen-texture-zebra",
|
2026-05-09 10:34:02 -07:00
|
|
|
"--gen-texture-knit", "--gen-texture-chainmail",
|
2026-05-09 10:50:46 -07:00
|
|
|
"--gen-texture-planks", "--gen-texture-corrugated",
|
2026-05-09 11:12:28 -07:00
|
|
|
"--gen-texture-rope", "--gen-texture-caustics",
|
2026-05-09 11:31:27 -07:00
|
|
|
"--gen-texture-starburst", "--gen-texture-studs",
|
2026-05-09 11:44:33 -07:00
|
|
|
"--gen-texture-moss", "--gen-texture-woodgrain",
|
2026-05-09 11:56:01 -07:00
|
|
|
"--gen-texture-carbon", "--gen-texture-pinstripe",
|
2026-05-09 12:08:11 -07:00
|
|
|
"--gen-texture-camo", "--gen-texture-snake-skin",
|
2026-05-09 12:20:11 -07:00
|
|
|
"--gen-texture-mesh-screen", "--gen-texture-bamboo",
|
2026-05-09 12:33:25 -07:00
|
|
|
"--gen-texture-blueprint", "--gen-texture-rust-streaks",
|
2026-05-09 12:47:28 -07:00
|
|
|
"--gen-texture-plaid", "--gen-texture-diamond-grid",
|
2026-05-09 12:57:47 -07:00
|
|
|
"--gen-texture-houndstooth", "--gen-texture-chevron",
|
2026-05-09 13:08:07 -07:00
|
|
|
"--gen-texture-dunes", "--gen-texture-swirl",
|
2026-05-09 13:19:30 -07:00
|
|
|
"--gen-texture-ironbark", "--gen-texture-mold",
|
2026-05-09 13:30:57 -07:00
|
|
|
"--gen-texture-embroidery", "--gen-texture-lightbeam",
|
2026-05-09 13:41:40 -07:00
|
|
|
"--gen-texture-dewdrops", "--gen-texture-pinwheel",
|
2026-05-09 13:56:41 -07:00
|
|
|
"--gen-texture-scratched-metal", "--gen-texture-crackle",
|
2026-05-09 14:12:04 -07:00
|
|
|
"--gen-texture-star", "--gen-texture-halftone",
|
2026-05-09 14:26:57 -07:00
|
|
|
"--gen-texture-bayer", "--gen-texture-moon",
|
2026-05-09 14:42:23 -07:00
|
|
|
"--gen-texture-damask",
|
2026-05-09 10:08:14 -07:00
|
|
|
"--validate-glb", "--info-glb", "--info-glb-tree", "--info-glb-bytes",
|
|
|
|
|
"--validate-jsondbc", "--check-glb-bounds", "--validate-stl",
|
|
|
|
|
"--validate-png", "--validate-blp",
|
|
|
|
|
"--zone-summary", "--info-zone-tree", "--info-project-tree",
|
|
|
|
|
"--info-zone-bytes", "--info-project-bytes",
|
|
|
|
|
"--info-zone-extents", "--info-project-extents",
|
|
|
|
|
"--info-zone-water", "--info-project-water",
|
|
|
|
|
"--info-zone-density", "--info-project-density",
|
|
|
|
|
"--export-zone-summary-md", "--export-quest-graph",
|
|
|
|
|
"--export-zone-csv", "--export-zone-html", "--export-project-html",
|
|
|
|
|
"--export-project-md", "--export-zone-checksum", "--export-project-checksum",
|
|
|
|
|
"--validate-project-checksum",
|
|
|
|
|
"--scaffold-zone", "--mvp-zone", "--add-tile", "--remove-tile", "--list-tiles",
|
|
|
|
|
"--for-each-zone", "--for-each-tile", "--zone-stats", "--info-tilemap",
|
|
|
|
|
"--list-zone-deps", "--list-project-orphans", "--remove-project-orphans",
|
|
|
|
|
"--check-zone-refs", "--check-zone-content",
|
|
|
|
|
"--check-project-content", "--check-project-refs",
|
|
|
|
|
"--export-zone-deps-md", "--export-zone-spawn-png",
|
|
|
|
|
"--add-creature", "--add-object", "--add-quest", "--add-item",
|
|
|
|
|
"--random-populate-zone", "--random-populate-items",
|
|
|
|
|
"--info-zone-audio", "--snap-zone-to-ground", "--audit-zone-spawns",
|
|
|
|
|
"--info-project-audio", "--snap-project-to-ground",
|
|
|
|
|
"--audit-project-spawns", "--list-zone-spawns", "--list-project-spawns",
|
|
|
|
|
"--gen-random-zone", "--gen-random-project", "--gen-zone-texture-pack",
|
|
|
|
|
"--gen-zone-mesh-pack", "--gen-zone-starter-pack",
|
|
|
|
|
"--gen-project-starter-pack", "--gen-audio-tone",
|
|
|
|
|
"--gen-audio-noise", "--gen-audio-sweep", "--gen-zone-audio-pack",
|
|
|
|
|
"--info-zone-summary", "--info-project-summary",
|
|
|
|
|
"--info-zone-deps", "--info-project-deps",
|
|
|
|
|
"--gen-zone-readme", "--gen-project-readme",
|
|
|
|
|
"--validate-zone-pack", "--validate-project-packs", "--info-spawn",
|
|
|
|
|
"--diff-zone-spawns",
|
|
|
|
|
"--list-items", "--info-item", "--set-item", "--export-zone-items-md",
|
|
|
|
|
"--export-project-items-md", "--export-project-items-csv",
|
|
|
|
|
"--add-quest-objective", "--add-quest-reward-item", "--set-quest-reward",
|
|
|
|
|
"--remove-quest-objective", "--clone-quest", "--clone-creature",
|
|
|
|
|
"--clone-item", "--validate-items", "--validate-project-items",
|
|
|
|
|
"--info-project-items",
|
|
|
|
|
"--clone-object",
|
|
|
|
|
"--remove-creature", "--remove-object", "--remove-quest", "--remove-item",
|
|
|
|
|
"--copy-zone-items",
|
|
|
|
|
"--copy-zone", "--rename-zone", "--remove-zone",
|
|
|
|
|
"--clear-zone-content", "--strip-zone", "--strip-project",
|
|
|
|
|
"--repair-zone", "--repair-project",
|
|
|
|
|
"--gen-makefile", "--gen-project-makefile",
|
|
|
|
|
"--build-woc", "--regen-collision", "--fix-zone",
|
|
|
|
|
"--export-png", "--export-obj", "--import-obj",
|
|
|
|
|
"--export-wob-obj", "--import-wob-obj",
|
|
|
|
|
"--export-woc-obj", "--export-whm-obj",
|
|
|
|
|
"--export-glb", "--export-wob-glb", "--export-whm-glb",
|
|
|
|
|
"--export-stl", "--import-stl",
|
|
|
|
|
"--bake-zone-glb", "--bake-zone-stl", "--bake-zone-obj",
|
|
|
|
|
"--bake-project-obj", "--bake-project-stl", "--bake-project-glb",
|
2026-05-09 11:36:38 -07:00
|
|
|
"--bake-wom-collision", "--bake-wob-collision", "--bake-zone-collision",
|
2026-05-09 11:33:10 -07:00
|
|
|
"--audit-watertight", "--audit-watertight-wob",
|
2026-05-09 10:08:14 -07:00
|
|
|
"--convert-m2", "--convert-m2-batch",
|
|
|
|
|
"--convert-wmo", "--convert-wmo-batch",
|
|
|
|
|
"--convert-dbc-json", "--convert-dbc-batch", "--convert-json-dbc",
|
|
|
|
|
"--convert-blp-png", "--convert-blp-batch",
|
|
|
|
|
"--migrate-wom", "--migrate-zone", "--migrate-project",
|
|
|
|
|
"--migrate-data-tree", "--info-data-tree", "--strip-data-tree",
|
|
|
|
|
"--audit-data-tree",
|
|
|
|
|
"--migrate-jsondbc",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const std::size_t kArgRequiredSize =
|
|
|
|
|
sizeof(kArgRequired) / sizeof(kArgRequired[0]);
|
|
|
|
|
|
|
|
|
|
} // namespace cli
|
|
|
|
|
} // namespace editor
|
|
|
|
|
} // namespace wowee
|