private static RegionModels ExtractRegionM2s(WDTFile wdt) { LoadedM2Ids = new List <uint>(250); RegionModels models; if (wdt == null) { return(null); } if ((wdt.Header.Header1 & WDTFlags.GlobalWMO) != 0) { // No terrain, load the global WMO if (wdt.ObjectDefinitions == null) { return(null); } models = new RegionModels { HasTiles = false, ObjectsByTile = new TileModels[1, 1] }; models.ObjectsByTile[0, 0] = ExtractWDTM2s(wdt.ObjectDefinitions); LoadedM2Ids.Clear(); return(models); } models = new RegionModels { HasTiles = true }; for (var tileY = 0; tileY < TerrainConstants.TilesPerMapSide; tileY++) { for (var tileX = 0; tileX < TerrainConstants.TilesPerMapSide; tileX++) { //if (tileX != 36) continue; //if (tileY != 49) continue; if (!wdt.TileProfile[tileX, tileY]) { continue; } var adtName = string.Format("{0}_{1:00}_{2:00}", wdt.Name, tileX, tileY); var adt = ADTParser.Process(manager, wdt.Path, adtName); if (adt == null) { continue; } models.ObjectsByTile[tileX, tileY] = ExtractTileM2s(tileX, tileY, adt); } } LoadedM2Ids.Clear(); return(models); }
private static RegionModels ExtractRegionM2s(WDTFile wdt) { LoadedM2Ids = new List<uint>(250); RegionModels models; if (wdt == null) return null; if ((wdt.Header.Header1 & WDTFlags.GlobalWMO) != 0) { // No terrain, load the global WMO if (wdt.ObjectDefinitions == null) return null; models = new RegionModels { HasTiles = false, ObjectsByTile = new TileModels[1, 1] }; models.ObjectsByTile[0, 0] = ExtractWDTM2s(wdt.ObjectDefinitions); LoadedM2Ids.Clear(); return models; } models = new RegionModels { HasTiles = true }; for (var tileY = 0; tileY < TerrainConstants.TilesPerMapSide; tileY++) { for (var tileX = 0; tileX < TerrainConstants.TilesPerMapSide; tileX++) { //if (tileX != 36) continue; //if (tileY != 49) continue; if (!wdt.TileProfile[tileX, tileY]) continue; var adtName = string.Format("{0}_{1:00}_{2:00}", wdt.Name, tileX, tileY); var adt = ADTParser.Process(manager, wdt.Path, adtName); if (adt == null) continue; models.ObjectsByTile[tileX, tileY] = ExtractTileM2s(tileX, tileY, adt); } } LoadedM2Ids.Clear(); return models; }