public MpqTerrainManager(TileIdentifier tileId) { var wowRootDir = DBCTool.FindWowDir(); MpqManager = new MpqManager(wowRootDir); TileId = tileId; var entries = GetMapEntries(); MapInfo entry = null; foreach (var item in entries) { if (item.Id != tileId.MapId) { continue; } entry = item; break; } WDTParser.MpqManager = MpqManager; _wdt = WDTParser.Process(entry); _adtManager = new ADTManager(this); _wmoManager = new WMOManager(); _m2Manager = new M2Manager(); _meshManager = new NavMeshManager(); _selectedTriangleManager = new SelectedTriangleManager(_adtManager); }
/// <summary> /// Starts processing all WDT and ADT files /// </summary> public static void ProcessAll() { if (Parsed == null) { throw new Exception("WDTExtractor.Parsed must be set before calling WDTExtractor.Process"); } var wowRootDir = DBCTool.FindWowDir(); MpqManager = new MpqManager(wowRootDir); var entryList = GetMapEntries(); WDTParser.MpqManager = MpqManager; foreach (var mapEntry in entryList) { //if (mapEntry.Id != MapId.EasternKingdoms) continue; var wdt = WDTParser.Process(mapEntry); if (wdt == null) { continue; } var path = Path.Combine(TerrainDisplayConfig.MapDir, wdt.Entry.Id.ToString()); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var filePath = Path.Combine(path, string.Format("{0}{1}", wdt.Entry.Id, Extension)); using (var file = File.Create(filePath)) { WriteWdt(file, wdt); file.Close(); } Parsed(wdt); } }
public static void WriteM2Files() { log.Info("Extracting partial M2 world objects - This might take a few minutes....."); var startTime = DateTime.Now; var wowRootDir = ToolConfig.Instance.GetWoWDir(); var outputDir = ToolConfig.M2Dir; manager = new MpqManager(wowRootDir); var entryList = DBCMapReader.GetMapEntries(); if (entryList == null) { log.Error("Could not retrieve MapEntries."); return; } foreach (var mapEntry in entryList) { //if (mapEntry.Id != (int)MapId.EasternKingdoms) continue; var dir = mapEntry.MapDirName; var wdtDir = Path.Combine(baseDir, dir); var wdtName = dir; var wdt = WDTParser.Process(manager, wdtDir, wdtName); if (wdt == null) { continue; } var regionM2s = ExtractRegionM2s(wdt); var count = 0; var max = regionM2s.HasTiles ? TerrainConstants.TilesPerMapSide : 1; for (var tileY = 0; tileY < max; tileY++) { for (var tileX = 0; tileX < max; tileX++) { //if (tileX != 36) continue; //if (tileY != 49) continue; if (regionM2s.ObjectsByTile[tileX, tileY] == null) { continue; } // Don't bother writing tiles with no models. var tileModels = regionM2s.ObjectsByTile[tileX, tileY]; if (tileModels.Models.Count == 0) { continue; } var path = Path.Combine(outputDir, mapEntry.Id.ToString()); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var file = File.Create(Path.Combine(path, TerrainConstants.GetM2File(tileX, tileY))); WriteTileM2s(file, tileModels); count++; file.Close(); } } log.Info(count); } log.Info("Done ({0})", DateTime.Now - startTime); }