コード例 #1
0
ファイル: Program.cs プロジェクト: yurlik-karu/Tools
        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!");
        }
コード例 #2
0
        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!");
        }