Kelsidavis-WoWee/tools/editor
Kelsi dc7aec507f feat(editor): add --export-zone-spawn-png for top-down spawn-position maps
Renders a top-down PNG showing creature + object spawn positions
colored by type. Bound by the zone's tile range so the image is
properly framed at zone scale:

  wowee_editor --export-zone-spawn-png custom_zones/MyZone
  # -> custom_zones/MyZone/MyZone_spawns.png

Layout:
- Tile-grid lines at tile boundaries (subtle grey on dark grey)
- Red 3×3 dots: creature spawns
- Green 3×3 dots: M2 object placements
- Blue 3×3 dots: WMO object placements
- 256 px per tile (so a 4-tile zone is 512×512); cap at 4096
  largest dim for huge multi-tile projects

WoW coord -> image transform: +X world is north (up in image),
+Y world is west (left in image). Same convention --info-tilemap
uses, so the spawn map and the tilemap line up visually.

Useful for design review ('does the spawn distribution match the
encounter design?'), screenshot bait for blog posts, and instant
visual validation of new content before opening the GUI.

Verified on a 1-tile mvp-zone with 3 creatures + 1 object plotted:
256×256 RGB PNG, dots placed at expected positions, --info-png
confirms the output is well-formed (8-bit RGB, 2184 bytes).
2026-05-06 18:59:44 -07:00
..
adt_writer.cpp fix(adt): scrub NaN/inf floats at write time 2026-05-06 06:49:51 -07:00
adt_writer.hpp feat(editor): add standalone world editor (rough/WIP) 2026-05-05 03:47:03 -07:00
asset_browser.cpp feat(editor): Find Valid Tile button, improved ADT loading workflow 2026-05-05 06:35:37 -07:00
asset_browser.hpp feat(editor): Find Valid Tile button, improved ADT loading workflow 2026-05-05 06:35:37 -07:00
content_pack.cpp fix(wcp): cap readInfo file-list parse at 1M entries 2026-05-06 09:57:37 -07:00
content_pack.hpp feat(validate): report file counts and per-format invalid totals 2026-05-06 07:12:04 -07:00
dbc_exporter.cpp feat(editor): export creature/faction/item DBCs alongside zone DBCs 2026-05-06 01:41:53 -07:00
dbc_exporter.hpp feat(editor): DBC→JSON export for open format zone data tables 2026-05-05 10:21:14 -07:00
editor_app.cpp fix(editor): NaN-safe baseHeight propagation in addAdjacentTile 2026-05-06 08:37:19 -07:00
editor_app.hpp feat(editor): status bar asterisk also reflects unsaved object/NPC/quest changes 2026-05-06 03:01:09 -07:00
editor_brush.cpp fix(brush): defensive guards in EditorBrush::getInfluence 2026-05-06 07:38:50 -07:00
editor_brush.hpp fix(brush): NaN-guard EditorBrush::setPosition 2026-05-06 10:15:00 -07:00
editor_camera.cpp fix(camera): NaN guards on pivot orbit, setPosition, setYawPitch 2026-05-06 08:03:57 -07:00
editor_camera.hpp fix(camera): validate setSpeed input against wheel-clamp range 2026-05-06 10:12:45 -07:00
editor_history.cpp fix(history): bounds-check chunkIndex in captureChunk/restoreChunk 2026-05-06 10:13:56 -07:00
editor_history.hpp fix(editor): undo now covers texture painting, fix stale buffer bug 2026-05-05 12:58:11 -07:00
editor_markers.cpp fix(markers): skip objects with NaN position/scale on update 2026-05-06 07:56:26 -07:00
editor_markers.hpp feat(editor): add standalone world editor (rough/WIP) 2026-05-05 03:47:03 -07:00
editor_project.cpp fix(project): cap zones at 1024 on project load 2026-05-06 10:01:36 -07:00
editor_project.hpp feat(editor): git integration for collaborative expansion development 2026-05-05 09:45:00 -07:00
editor_ui.cpp feat(editor): preset selection auto-fills sensible AzerothCore faction 2026-05-06 04:48:30 -07:00
editor_ui.hpp feat(editor): path preview line, transform undo, complete undo coverage 2026-05-05 13:33:28 -07:00
editor_viewport.cpp fix(viewport): clear ghost preview on NaN/non-positive inputs 2026-05-06 08:24:51 -07:00
editor_viewport.hpp feat(editor): viewport WOM/WOB lookups also probe per-zone roots 2026-05-06 04:13:03 -07:00
editor_water.cpp fix(water): skip chunks with NaN water height in mesh build 2026-05-06 08:04:44 -07:00
editor_water.hpp feat(editor): brush radius circle indicator on terrain 2026-05-05 04:10:46 -07:00
FORMAT_SPEC.md docs(formats): document the complete headless CLI surface 2026-05-06 08:53:45 -07:00
main.cpp feat(editor): add --export-zone-spawn-png for top-down spawn-position maps 2026-05-06 18:59:44 -07:00
npc_presets.cpp fix(editor): filter bad M2 models, toast on tile not found, robustness 2026-05-05 07:10:29 -07:00
npc_presets.hpp feat(editor): add standalone world editor (rough/WIP) 2026-05-05 03:47:03 -07:00
npc_spawner.cpp fix(npc): cap spawn count at 50k on load 2026-05-06 09:56:55 -07:00
npc_spawner.hpp fix(editor): NPC default scale 1.0 (was 3.0) to match AzerothCore defaults 2026-05-06 04:27:22 -07:00
object_placer.cpp fix(editor): cap quest count at 4096 and object count at 100k on load 2026-05-06 09:56:03 -07:00
object_placer.hpp feat(editor): biome vegetation auto-population system 2026-05-05 16:42:41 -07:00
quest_editor.cpp fix(editor): cap quest count at 4096 and object count at 100k on load 2026-05-06 09:56:03 -07:00
quest_editor.hpp fix(editor): harden JSON handling, quest loading, and content validation 2026-05-05 12:48:50 -07:00
server_module_gen.cpp fix(editor): slugify mapName for module dir + conf keys 2026-05-06 06:47:43 -07:00
server_module_gen.hpp feat(editor): AzerothCore server module generator 2026-05-05 16:31:13 -07:00
sql_exporter.cpp fix(sql): downgrade Wander to stationary when wanderRadius == 0 2026-05-06 09:53:07 -07:00
sql_exporter.hpp fix(editor): escape user strings in server module map/zone/tele SQL 2026-05-06 06:46:58 -07:00
stb_image_impl.cpp feat(editor): add standalone world editor (rough/WIP) 2026-05-05 03:47:03 -07:00
terrain_biomes.hpp feat(editor): biome vegetation auto-population system 2026-05-05 16:42:41 -07:00
terrain_editor.cpp fix(terrain): reject NaN rays in raycastTerrain 2026-05-06 07:58:56 -07:00
terrain_editor.hpp feat(editor): PNG/JPG/BMP heightmap image import, undo for all imports 2026-05-05 15:42:35 -07:00
texture_exporter.cpp fix(editor): texture exporter validates BLP image before passing to stbi 2026-05-06 06:29:26 -07:00
texture_exporter.hpp feat(editor): export WMO textures with the zone 2026-05-06 01:40:05 -07:00
texture_painter.cpp fix(painter): reject NaN endpoints and zero-length lines in paintAlongPath 2026-05-06 07:41:58 -07:00
texture_painter.hpp feat(editor): texture eyedropper, WOT/WHM preference loading 2026-05-05 13:39:53 -07:00
transform_gizmo.cpp fix(gizmo): hide on NaN target instead of building NaN geometry 2026-05-06 08:01:23 -07:00
transform_gizmo.hpp feat(editor): add standalone world editor (rough/WIP) 2026-05-05 03:47:03 -07:00
wowee_terrain.cpp fix(wot): scrub NaN/inf in doodad/WMO placements at save time 2026-05-06 07:03:02 -07:00
wowee_terrain.hpp feat(editor): zone map image export (colored top-down PNG) 2026-05-05 16:01:29 -07:00
zone_manifest.cpp fix(zone): scrub NaN/inf manifest floats at save time 2026-05-06 07:05:13 -07:00
zone_manifest.hpp feat(editor): zone metadata panel with mapId, displayName, gameplay flags 2026-05-05 15:52:59 -07:00