示例#1
0
文件: BLS.cs 项目: Xalcon/libwarcraft
        /// <summary>
        /// Initializes a new instance of the <see cref="BLS"/> class.
        /// </summary>
        /// <param name="inData">The binary data containing the BLS file.</param>
        public BLS(byte[] inData)
        {
            using (var ms = new MemoryStream(inData))
            {
                using (var br = new BinaryReader(ms))
                {
                    Header = new BLSHeader(br.ReadBytes(BLSHeader.GetSize()));

                    for (var i = 0; i < Header.ShaderBlockCount; ++i)
                    {
                        var shaderBlock = new ShaderBlock(br.ReadBytes(ShaderBlock.GetSize()));
                        shaderBlock.Data = br.ReadChars((int)shaderBlock.DataSize);

                        Shaders.Add(shaderBlock);

                        if ((ms.Position % 4) == 0)
                        {
                            continue;
                        }

                        var padCount = 4 - (ms.Position % 4);
                        ms.Position += padCount;
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// Creates a new instance of the <see cref="BLS"/> class from supplied binary data.
        /// </summary>
        /// <param name="inData">The binary data containing the BLS file.</param>
        public BLS(byte[] inData)
        {
            using (MemoryStream ms = new MemoryStream(inData))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    this.Header = new BLSHeader(br.ReadBytes(BLSHeader.GetSize()));

                    for (int i = 0; i < this.Header.ShaderBlockCount; ++i)
                    {
                        ShaderBlock shaderBlock = new ShaderBlock(br.ReadBytes(ShaderBlock.GetSize()));
                        shaderBlock.Data = br.ReadChars((int)shaderBlock.DataSize);

                        this.Shaders.Add(shaderBlock);

                        if ((ms.Position % 4) != 0)
                        {
                            long padCount = 4 - (ms.Position % 4);
                            ms.Position += padCount;
                        }
                    }
                }
            }
        }