feat: WOB→WMO conversion and loading in client terrain manager

- WoweeBuildingLoader::toWMOModel() converts WOB groups to WMOModel
  with vertices, indices, normals, texCoords, and vertex colors
- TerrainManager now loads WOB files from custom_zones/buildings/
  and converts to WMOModel for the WMO renderer pipeline
- WMOGroup indices converted from uint32 to uint16 for renderer compat

Client open format support — 4 of 6 now loading:
- FULL: WOT/WHM terrain, PNG textures, WOM models
- LOAD: WOB buildings (converts to WMOModel, render pipeline TODO)
- DETECT: zone.json (scanned), JSON DBC (scanned)
This commit is contained in:
Kelsi 2026-05-05 12:12:26 -07:00
parent aac854c8ad
commit 01d3638835
3 changed files with 46 additions and 1 deletions

View file

@ -605,7 +605,14 @@ std::shared_ptr<PendingTile> TerrainManager::prepareTile(int x, int y) {
std::vector<std::string> wobPrefixes = {"custom_zones/buildings/", "output/" + mapName + "/buildings/"};
for (const auto& prefix : wobPrefixes) {
if (pipeline::WoweeBuildingLoader::exists(prefix + wobBase)) {
LOG_INFO("WOB building found: ", prefix + wobBase, " (loading not yet implemented)");
auto wob = pipeline::WoweeBuildingLoader::load(prefix + wobBase);
if (wob.isValid()) {
pipeline::WMOModel wobAsWmo;
if (pipeline::WoweeBuildingLoader::toWMOModel(wob, wobAsWmo)) {
LOG_INFO("Loaded WOB building: ", prefix + wobBase);
// TODO: feed wobAsWmo into the WMO render pipeline
}
}
break;
}
}