static void ExtractMMaps() { if (!Directory.Exists("maps") || Directory.GetFiles("maps").Length == 0) { Console.WriteLine("'maps' directory is empty or does not exist"); return; } if (!Directory.Exists("vmaps") || Directory.GetFiles("vmaps").Length == 0) { Console.WriteLine("'vmaps' directory is empty or does not exist"); return; } CreateDirectory("mmaps"); Console.WriteLine("Extracting MMap files..."); var vm = new Framework.Collision.VMapManager2(); MultiMap <uint, uint> mapData = new MultiMap <uint, uint>(); foreach (var record in CliDB.MapStorage.Values) { if (record.ParentMapID != -1) { mapData.Add((uint)record.ParentMapID, record.Id); } } vm.Initialize(mapData); MapBuilder builder = new MapBuilder(vm); var watch = System.Diagnostics.Stopwatch.StartNew(); builder.buildAllMaps(); Console.WriteLine($"Finished. MMAPS were built in {watch.ElapsedMilliseconds} ms!"); }
static void ExtractMMaps(string[] args) { if (!Directory.Exists("maps") || Directory.GetFiles("maps").Length == 0) { Console.WriteLine("'maps' directory is empty or does not exist"); return; } if (!Directory.Exists("vmaps") || Directory.GetFiles("vmaps").Length == 0) { Console.WriteLine("'vmaps' directory is empty or does not exist"); return; } CreateDirectory("mmaps_new"); //handle args bool debugMaps = false; int mapId = -1; for (var i = 1; i < args.Length; ++i) { switch (args[i].ToLower()) { case "-debug": CreateDirectory("mmaps/meshes"); debugMaps = true; break; case "-id": mapId = int.Parse(args[i + 1]); i++; break; } } Console.WriteLine("Extracting MMap files..."); var vm = new Framework.Collision.VMapManager2(); var mapStorage = DBReader.Read <MapRecord>("DBFilesClient\\Map.db2"); if (mapStorage == null) { Console.WriteLine("Fatal error: Invalid Map.db2 file format!\n"); return; } MultiMap <uint, uint> mapData = new MultiMap <uint, uint>(); foreach (var record in mapStorage.Values) { if (record.ParentMapID != -1) { mapData.Add((uint)record.ParentMapID, record.Id); } } vm.Initialize(mapData); MapBuilder builder = new MapBuilder(vm, debugMaps); var watch = System.Diagnostics.Stopwatch.StartNew(); if (mapId != -1) { builder.buildMap((uint)mapId); } else { builder.buildAllMaps(); } Console.WriteLine($"Finished. MMAPS were built in {watch.ElapsedMilliseconds} ms!"); }