示例#1
0
文件: MODD.cs 项目: WowDevs/WoWMap
        public override void Read()
        {
            var br = Chunk.GetReader();

            Entries = new MODDEntry[Chunk.Size / 40];
            for (int i = 0; i < Entries.Length; i++)
            {
                Entries[i] = MODDEntry.Read(br);
            }
        }
示例#2
0
 /// <inheritdoc/>
 public void LoadBinaryData(byte[] inData)
 {
     using (var ms = new MemoryStream(inData))
         using (var br = new BinaryReader(ms))
         {
             var materialCount = br.BaseStream.Length / MODDEntry.GetSize();
             for (var i = 0; i < materialCount; ++i)
             {
                 MODDEntries.Add(new MODDEntry(br.ReadBytes(MODDEntry.GetSize())));
             }
         }
 }
示例#3
0
文件: MODD.cs 项目: aeo24/WoWMap
 public static MODDEntry Read(BinaryReader br)
 {
     var e = new MODDEntry();
     e.ofsMODN = br.ReadUInt32();
     e.Position = new Vector3(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
     e.Rotation = new float[4];
     for (int i = 0; i < 4; i++)
         e.Rotation[i] = br.ReadSingle();
     e.Scale = br.ReadSingle();
     e.Color = new byte[4];
     for (int i = 0; i < 4; i++)
         e.Color[i] = br.ReadByte();
     return e;
 }
示例#4
0
文件: MODD.cs 项目: WowDevs/WoWMap
            public static MODDEntry Read(BinaryReader br)
            {
                var e = new MODDEntry();

                e.ofsMODN  = br.ReadUInt32();
                e.Position = new Vector3(br.ReadSingle(), br.ReadSingle(), -br.ReadSingle());
                e.Rotation = new float[4];
                for (int i = 0; i < 4; i++)
                {
                    e.Rotation[i] = br.ReadSingle();
                }
                e.Scale = br.ReadSingle();
                e.Color = new byte[4];
                for (int i = 0; i < 4; i++)
                {
                    e.Color[i] = br.ReadByte();
                }
                return(e);
            }
示例#5
0
        public void Read(byte[] inData)
        {
            using (var stream = new MemoryStream(inData))
                using (var reader = new BinaryReader(stream))
                {
                    var moddSize = inData.Length / 40;
                    for (var i = 0; i < moddSize; ++i)
                    {
                        var finalNameBytes  = new byte[4];
                        var nameOffsetBytes = reader.ReadBytes(3);
                        Buffer.BlockCopy(nameOffsetBytes, 0, finalNameBytes, 0, 3);

                        var modd = new MODDEntry
                        {
                            NameIndex = BitConverter.ToInt32(finalNameBytes, 0),
                            Flags     = reader.ReadByte(),
                            Position  = reader.ReadC3Vector(),
                            Rotation  = reader.ReadC3Vector(),
                            RotationW = reader.ReadSingle(),
                            Scale     = reader.ReadSingle(),
                            Color     = reader.ReadCArgb()
                        };

                        var filename = AddFilename(MODI.DoodadFileIds[modd.NameIndex]);
                        if (filename != string.Empty)
                        {
                            var idx = Filenames[filename];
                            nameOffsetBytes = BitConverter.GetBytes(idx);

                            Buffer.BlockCopy(nameOffsetBytes, 0, finalNameBytes, 0, 3);
                            modd.NameIndex = BitConverter.ToInt32(finalNameBytes, 0);
                        }
                        else
                        {
                            modd.NameIndex = -1;
                        }

                        MODDs.Add(modd);
                    }
                }
        }