public override void Write(BinaryWriter file) { flags = 0; if (X.val != 0 || Y.val != 0 || Z.val != 0) { flags |= 1; } if (Pitch.val != 0 || Yaw.val != 0 || Roll.val != 0 || W.val != 1) { flags |= 2; } if (Scale_x.val != 0 || Scale_y.val != 0 || Scale_z.val != 0) { flags |= 4; } file.Write(flags); if ((flags & 1) == 1) { X.Write(file); Y.Write(file); Z.Write(file); } if ((flags & 2) == 2) { Pitch.Write(file); Yaw.Write(file); Roll.Write(file); W.Write(file); } if ((flags & 4) == 4) { Scale_x.Write(file); Scale_y.Write(file); Scale_z.Write(file); } }