feat(editor): add WSPN JSON round-trip authoring workflow

Closes the WSPN open-format loop with --export-wspn-json /
--import-wspn-json, mirroring the WOL/WOW/WOMX/WSND JSON
pairs from earlier batches. All 5 binary formats added in
recent batches now have full JSON round-trip authoring.

Each entry round-trips all 12 fields:
  kind (int + kindName string), entryId, position[3],
  rotation[3], scale, flags (int + flagsList string array),
  respawnSec, factionId, questIdRequired, wanderRadius,
  label.

Vector fields are emitted as 3-element arrays for natural
JSON layout. Both kind and flags are emitted in dual form
(int + named) so a hand-author can write the named string
forms and skip the integer boilerplate. Missing optional
fields fall back to WoweeSpawns::Entry defaults.

Verified byte-identical round-trip on the village preset
(12 entries: 6 creature + 2 object + 4 doodad). The
position vec3 round-trips through floats with no precision
loss for the typical small-coordinate test cases.

Adds 2 flags (475 kArgRequired entries total).
This commit is contained in:
Kelsi 2026-05-09 14:59:48 -07:00
parent 88d1e6229f
commit 23f262c655
3 changed files with 163 additions and 0 deletions

View file

@ -31,6 +31,7 @@ const char* const kArgRequired[] = {
"--export-wsnd-json", "--import-wsnd-json",
"--gen-spawns", "--gen-spawns-camp", "--gen-spawns-village",
"--info-wspn", "--validate-wspn",
"--export-wspn-json", "--import-wspn-json",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",