Exemple #1
0
        public VMapTileLoader(string directory, int mapID, int tileX, int tileY)
        {
            X = tileX;
            Y = tileY;

            var refCounter = new Dictionary <int, int>();

            var filePath = Path.Combine(directory, "vmaps", $"{mapID:D3}_{tileX:D2}_{tileY:D2}.vmtile");

            if (!(FileExists = File.Exists(filePath)))
            {
                return;
            }

            using (var reader = new BinaryReader(File.OpenRead(filePath)))
            {
                reader.BaseStream.Position += 8; // Skip magic

                var numSpawns = reader.ReadInt32();
                for (var i = 0; i < numSpawns; ++i)
                {
                    var modelSpawn      = new ModelSpawn(directory, reader);
                    var referencedValue = reader.ReadInt32();

                    if (!Spawns.ContainsKey(modelSpawn.Name))
                    {
                        Spawns.Add(modelSpawn.Name, modelSpawn);
                    }
                    // else
                    //     // Instance already added in ModelSpawn constructor
                }
            }

            foreach (var modelInstance in Spawns.Values)
            {
                if (!modelInstance.Name.EndsWith(".m2"))
                {
                    continue;
                }

                foreach (var groupModel in modelInstance.Model.GroupModels)
                {
                    groupModel.InvertIndices();
                }
            }
        }