public MaterialData(BinaryReader reader)
        {
            var startPos = reader.BaseStream.Position;

            Name         = BiffUtil.ReadNullTerminatedString(reader, 32);
            BaseColor    = reader.ReadInt32();
            Glossiness   = reader.ReadInt32();
            ClearCoat    = reader.ReadInt32();
            WrapLighting = reader.ReadSingle();
            IsMetal      = reader.ReadByte();
            reader.BaseStream.Seek(3, SeekOrigin.Current);
            Roughness       = reader.ReadSingle();
            GlossyImageLerp = reader.ReadByte();
            reader.BaseStream.Seek(3, SeekOrigin.Current);
            Edge      = reader.ReadSingle();
            Thickness = reader.ReadByte();
            reader.BaseStream.Seek(3, SeekOrigin.Current);
            Opacity = reader.ReadSingle();
            OpacityActiveEdgeAlpha = reader.ReadByte();
            reader.BaseStream.Seek(3, SeekOrigin.Current);

            var remainingSize = Size - (reader.BaseStream.Position - startPos);

            if (remainingSize != 0)
            {
                throw new InvalidOperationException("There are still " + remainingSize + " bytes left to read.");
            }
        }
        public PhysicsMaterialData(BinaryReader reader)
        {
            var startPos = reader.BaseStream.Position;

            Name              = BiffUtil.ReadNullTerminatedString(reader, 32);
            Elasticity        = reader.ReadSingle();
            ElasticityFallOff = reader.ReadSingle();
            Friction          = reader.ReadSingle();
            ScatterAngle      = reader.ReadSingle();
            var remainingSize = Size - (reader.BaseStream.Position - startPos);

            if (remainingSize > 0)
            {
                throw new InvalidOperationException("There are still " + remainingSize + " bytes left to read.");
                //reader.BaseStream.Seek(remainingSize, SeekOrigin.Current);
            }
        }