public override void FromBytes(byte[] bytes, ref int i) { try { Vector4 r1 = new Vector4(), r2 = new Vector4(), r3 = new Vector4(), r4 = new Vector4(); r1.FromBytes(bytes, i); i += sizeof(float) * 4; r2.FromBytes(bytes, i); i += sizeof(float) * 4; r3.FromBytes(bytes, i); i += sizeof(float) * 4; r4.FromBytes(bytes, i); i += sizeof(float) * 4; ProjectionMatrix.M11 = r1.X; ProjectionMatrix.M12 = r1.Y; ProjectionMatrix.M13 = r1.Z; ProjectionMatrix.M14 = r1.W; ProjectionMatrix.M21 = r2.X; ProjectionMatrix.M22 = r2.Y; ProjectionMatrix.M23 = r2.Z; ProjectionMatrix.M24 = r2.W; ProjectionMatrix.M31 = r3.X; ProjectionMatrix.M32 = r3.Y; ProjectionMatrix.M33 = r3.Z; ProjectionMatrix.M34 = r3.W; ProjectionMatrix.M41 = r4.X; ProjectionMatrix.M42 = r4.Y; ProjectionMatrix.M43 = r4.Z; ProjectionMatrix.M44 = r4.W; } catch (Exception) { throw new MalformedDataException(); } }