Beispiel #1
0
 /// <inheritdoc/>
 public void LoadBinaryData(byte[] inData)
 {
     using (var ms = new MemoryStream(inData))
         using (var br = new BinaryReader(ms))
         {
             var materialCount = br.BaseStream.Length / MOMTEntry.GetSize();
             for (var i = 0; i < materialCount; ++i)
             {
                 MOMTEntries.Add(new MOMTEntry(br.ReadBytes(MOMTEntry.GetSize())));
             }
         }
 }
Beispiel #2
0
        public void Read(byte[] inData)
        {
            using (var stream = new MemoryStream(inData))
                using (var reader = new BinaryReader(stream))
                {
                    var momtSize = inData.Length / 64;

                    for (var i = 0; i < momtSize; ++i)
                    {
                        var momt = new MOMTEntry
                        {
                            Flags1         = reader.ReadUInt32(),
                            ShaderType     = reader.ReadUInt32(),
                            BlendMode      = reader.ReadUInt32(),
                            TextureId1     = reader.ReadUInt32(),
                            SidnColor      = reader.ReadCArgb(),
                            FrameSidnColor = reader.ReadCArgb(),
                            TextureId2     = reader.ReadUInt32(),
                            DiffColor      = reader.ReadCArgb(),
                            GroundType     = reader.ReadUInt32(),
                            TextureId3     = reader.ReadUInt32(),
                            Color          = reader.ReadCArgb(),
                            Flags2         = reader.ReadUInt32()
                        };

                        momt.Flags1 &= 0xFF;

                        for (var j = 0; j < 4; ++j)
                        {
                            momt.RunTimeData[j] = reader.ReadUInt32();
                        }

                        var filename = AddFilename(momt.TextureId1);
                        if (filename != string.Empty)
                        {
                            var idx = Filenames[filename];
                            momt.TextureId1 = idx;
                        }
                        else
                        {
                            momt.TextureId1 = 0;
                        }

                        filename = AddFilename(momt.TextureId2);
                        if (filename != string.Empty)
                        {
                            var idx = Filenames[filename];
                            momt.TextureId2 = idx;
                        }
                        else
                        {
                            momt.TextureId2 = 0;
                        }

                        filename = AddFilename(momt.TextureId3);
                        if (filename != string.Empty)
                        {
                            var idx = Filenames[filename];
                            momt.TextureId3 = idx;
                        }
                        else
                        {
                            momt.TextureId3 = 0;
                        }

                        switch (momt.ShaderType)
                        {
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 7:  momt.ShaderType = 6; break;

                        case 9:  momt.ShaderType = 0; break;

                        case 12: momt.ShaderType = 5; break;

                        default:
                            if (momt.ShaderType >= 13)
                            {
                                momt.ShaderType = 4;
                            }
                            break;
                        }

                        MOMTs.Add(momt);
                    }
                }

            var motx = new MOTX {
                Filenames = Filenames.Keys.ToList()
            };

            WMOFile.Chunks.Add(motx);
        }