feat: complete client integration for all 6 open formats

- Wire WOB buildings into WMO render pipeline (loads→converts→renders)
- Implement JSON DBC loading in DBCFile::loadJSON() with nlohmann/json
- Wire JSON DBC override into AssetManager (custom_zones/output scan)
- Add WMO→WOB conversion with full geometry (fromWMO)
- Replace placeholder WOB export with real WMO→WOB conversion in editor
- Add --convert-wmo CLI flag for batch WMO→WOB conversion
- Store discovered custom zones on Renderer with getCustomZones() accessor
- Add isCustomZone_ member to TerrainManager

All 6 Blizzard format replacements now fully load in the client:
  ADT→WOT/WHM, WDT→zone.json, BLP→PNG, DBC→JSON, M2→WOM, WMO→WOB
This commit is contained in:
Kelsi 2026-05-05 12:41:19 -07:00
parent d8f2388635
commit 4fc0361f7a
11 changed files with 271 additions and 47 deletions

View file

@ -14,6 +14,7 @@
#include "rendering/vk_frame_data.hpp"
#include "rendering/vk_utils.hpp"
#include "rendering/sky_system.hpp"
#include "pipeline/custom_zone_discovery.hpp"
namespace wowee {
namespace core { class Window; }
@ -188,6 +189,8 @@ public:
game::ZoneManager* getZoneManager() { return zoneManager.get(); }
LightingManager* getLightingManager() { return lightingManager.get(); }
const std::vector<pipeline::CustomZoneInfo>& getCustomZones() const { return customZones_; }
private:
void runDeferredWorldInitStep(float deltaTime);
@ -267,6 +270,7 @@ private:
void renderShadowPass();
glm::mat4 computeLightSpaceMatrix();
std::vector<pipeline::CustomZoneInfo> customZones_;
pipeline::AssetManager* cachedAssetManager = nullptr;
// Spell visual effects — owned SpellVisualSystem (extracted from Renderer §4.4)