public GeometricTransformAttributeElement(Stream stream) : base(stream) { StoredValuesMask = StreamUtils.ReadUInt16(stream); var elementValueList = new List <Single>(16); var storedValuesMask = StoredValuesMask; for (int i = 0, c = 16; i < c; ++i) { if ((storedValuesMask & 0x8000) > 0) { var value = StreamUtils.ReadFloat(stream); elementValueList.Add(value); TransformationMatrix[i] = value; } storedValuesMask = (UInt16)(storedValuesMask << 1); } ElementValues = elementValueList.ToArray(); }
public MaterialAttributeElement(Stream stream) : base(stream) { DataFlags = StreamUtils.ReadUInt16(stream); var patternBitsAreUsed = (DataFlags & 0x0001) > 0; if (patternBitsAreUsed && (DataFlags & 0x0002) > 0) { AmbientCommonRGBValue = StreamUtils.ReadFloat(stream); } else { AmbientColour = new RGBA(stream); } DiffuseColour = new RGBA(stream); if (patternBitsAreUsed && (DataFlags & 0x0008) > 0) { SpecularCommonRGBValue = StreamUtils.ReadFloat(stream); } else { SpecularColour = new RGBA(stream); } if (patternBitsAreUsed && (DataFlags & 0x0004) > 0) { EmissionCommonRGBValue = StreamUtils.ReadFloat(stream); } else { EmissionColour = new RGBA(stream); } Shininess = StreamUtils.ReadFloat(stream); }