Наследование: TerrainDisplay.MPQ.ADT.ADTBase
Пример #1
0
 private static void LoadQuadTree(ExtractedADT adt)
 {
     foreach (var chunk in adt.Chunks)
     {
         adt.QuadTree.Insert(chunk);
         chunk.Bounds = adt.QuadTree.Nodes[chunk.NodeId].Bounds;
     }
 }
Пример #2
0
 private static void LoadQuadTree(ExtractedADT adt)
 {
     foreach (var chunk in adt.Chunks)
     {
         adt.QuadTree.Insert(chunk);
         chunk.Bounds = adt.QuadTree.Nodes[chunk.NodeId].Bounds;
     }
 }
Пример #3
0
        private static void ReadADTChunks(BinaryReader br, ExtractedADT adt)
        {
            var chunks = new ExtractedADTChunk[TerrainConstants.ChunksPerTileSide, TerrainConstants.ChunksPerTileSide];

            for (var x = 0; x < TerrainConstants.ChunksPerTileSide; x++)
            {
                for (var y = 0; y < TerrainConstants.ChunksPerTileSide; y++)
                {
                    chunks[y, x] = ReadADTChunk(br);
                }
            }
            adt.Chunks = chunks;
        }
Пример #4
0
        private static void ReadMapM2Defs(BinaryReader br, ExtractedADT adt)
        {
            var count     = br.ReadInt32();
            var m2DefList = new List <ExtractedMapM2Definition>(count);

            for (var i = 0; i < count; i++)
            {
                var def = new ExtractedMapM2Definition {
                    UniqueId     = br.ReadUInt32(),
                    FilePath     = br.ReadString(),
                    Extents      = br.ReadBoundingBox(),
                    Position     = br.ReadVector3(),
                    WorldToModel = br.ReadMatrix(),
                    ModelToWorld = br.ReadMatrix()
                };
                m2DefList.Add(def);
            }
            adt.M2Defs = m2DefList;
        }
Пример #5
0
        public static ExtractedADT Process(string filePath, MapId mapId, int tileX, int tileY)
        {
            if (!File.Exists(filePath))
            {
                throw new FileNotFoundException("ADT file does not exist: {0}", filePath);
            }

            var adt = new ExtractedADT(mapId, tileX, tileY);

            using (var file = File.OpenRead(filePath))
                using (var br = new BinaryReader(file))
                {
                    var fileType = br.ReadString();
                    if (fileType != FileTypeId)
                    {
                        br.Close();
                        throw new InvalidDataException(string.Format("ADT file not in valid format: {0}", filePath));
                    }

                    adt.IsWMOOnly = br.ReadBoolean();
                    ReadWMODefs(br, adt);

                    if (adt.IsWMOOnly)
                    {
                        br.Close();
                        return(adt);
                    }

                    ReadMapM2Defs(br, adt);
                    ReadQuadTree(br, adt);

                    adt.TerrainVertices = br.ReadVector3List();

                    ReadADTChunks(br, adt);

                    br.Close();
                }

            LoadQuadTree(adt);

            return(adt);
        }
Пример #6
0
        public static ExtractedADT Process(string filePath, MapId mapId, int tileX, int tileY)
        {
            if (!File.Exists(filePath))
            {
                throw new FileNotFoundException("ADT file does not exist: {0}", filePath);
            }

            var adt = new ExtractedADT(mapId, tileX, tileY);

            using(var file = File.OpenRead(filePath))
            using(var br = new BinaryReader(file))
            {
                var fileType = br.ReadString();
                if (fileType != FileTypeId)
                {
                    br.Close();
                    throw new InvalidDataException(string.Format("ADT file not in valid format: {0}", filePath));
                }

                adt.IsWMOOnly = br.ReadBoolean();
                ReadWMODefs(br, adt);

                if (adt.IsWMOOnly)
                {
                    br.Close();
                    return adt;
                }

                ReadMapM2Defs(br, adt);
                ReadQuadTree(br, adt);

                adt.TerrainVertices = br.ReadVector3List();

                ReadADTChunks(br, adt);

                br.Close();
            }

            LoadQuadTree(adt);

            return adt;
        }
Пример #7
0
        private static void ReadWMODefs(BinaryReader br, ExtractedADT adt)
        {
            var count      = br.ReadInt32();
            var wmoDefList = new List <ExtractedWMODefinition>(count);

            for (var i = 0; i < count; i++)
            {
                var def = new ExtractedWMODefinition {
                    UniqueId    = br.ReadUInt32(),
                    FilePath    = br.ReadString(),
                    Extents     = br.ReadBoundingBox(),
                    Position    = br.ReadVector3(),
                    DoodadSetId = br.ReadUInt16(),
                    WorldToWMO  = br.ReadMatrix(),
                    WMOToWorld  = br.ReadMatrix()
                };
                wmoDefList.Add(def);
            }
            adt.WMODefs = wmoDefList;
        }
Пример #8
0
 private static void ReadQuadTree(BinaryReader br, ExtractedADT adt)
 {
     adt.QuadTree = QuadTree <ExtractedADTChunk> .LoadFromFile(br);
 }
Пример #9
0
 private static void ReadWMODefs(BinaryReader br, ExtractedADT adt)
 {
     var count = br.ReadInt32();
     var wmoDefList = new List<ExtractedWMODefinition>(count);
     for (var i = 0; i < count; i++)
     {
         var def = new ExtractedWMODefinition {
                                                  UniqueId = br.ReadUInt32(),
                                                  FilePath = br.ReadString(),
                                                  Extents = br.ReadBoundingBox(),
                                                  Position = br.ReadVector3(),
                                                  DoodadSetId = br.ReadUInt16(),
                                                  WorldToWMO = br.ReadMatrix(),
                                                  WMOToWorld = br.ReadMatrix()
                                              };
         wmoDefList.Add(def);
     }
     adt.WMODefs = wmoDefList;
 }
Пример #10
0
 private static void ReadQuadTree(BinaryReader br, ExtractedADT adt)
 {
     adt.QuadTree = QuadTree<ExtractedADTChunk>.LoadFromFile(br);
 }
Пример #11
0
 private static void ReadMapM2Defs(BinaryReader br, ExtractedADT adt)
 {
     var count = br.ReadInt32();
     var m2DefList = new List<ExtractedMapM2Definition>(count);
     for (var i = 0; i < count; i++)
     {
         var def = new ExtractedMapM2Definition {
                                                    UniqueId = br.ReadUInt32(),
                                                    FilePath = br.ReadString(),
                                                    Extents = br.ReadBoundingBox(),
                                                    Position = br.ReadVector3(),
                                                    WorldToModel = br.ReadMatrix(),
                                                    ModelToWorld = br.ReadMatrix()
                                                };
         m2DefList.Add(def);
     }
     adt.M2Defs = m2DefList;
 }
Пример #12
0
 private static void ReadADTChunks(BinaryReader br, ExtractedADT adt)
 {
     var chunks = new ExtractedADTChunk[TerrainConstants.ChunksPerTileSide, TerrainConstants.ChunksPerTileSide];
     for (var x = 0; x < TerrainConstants.ChunksPerTileSide; x++)
     {
         for (var y = 0; y < TerrainConstants.ChunksPerTileSide; y++)
         {
             chunks[y, x] = ReadADTChunk(br);
         }
     }
     adt.Chunks = chunks;
 }