Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        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);
        }