public static void SetVector(BinaryDeserializer Deserializer, H3DFloatKeyFrameGroup[] Vector) { uint Flags = Deserializer.Reader.ReadUInt32(); long Position = Deserializer.BaseStream.Position; uint ConstantMask = (uint)H3DAnimVectorFlags.IsXConstant; uint NotExistMask = (uint)H3DAnimVectorFlags.IsXInexistent; for (int Axis = 0; Axis < Vector.Length; Axis++) { Deserializer.BaseStream.Seek(Position, SeekOrigin.Begin); Position += 4; bool Constant = (Flags & ConstantMask) != 0; bool Exists = (Flags & NotExistMask) == 0; if (Exists) { Vector[Axis] = H3DFloatKeyFrameGroup.ReadGroup(Deserializer, Constant); } ConstantMask <<= 1; NotExistMask <<= 1; } }
public static void SetVector(BinaryDeserializer Deserializer, ref H3DFloatKeyFrameGroup Vector) { H3DAnimVectorFlags Flags = (H3DAnimVectorFlags)Deserializer.Reader.ReadUInt32(); bool Constant = (Flags & H3DAnimVectorFlags.IsXConstant) != 0; bool Exists = (Flags & H3DAnimVectorFlags.IsXInexistent) == 0; if (Exists) { Vector = H3DFloatKeyFrameGroup.ReadGroup(Deserializer, Constant); } }
void ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) { long Position = Deserializer.BaseStream.Position; uint ConstantMask = (uint)H3DAnimTransformFlags.IsScaleXConstant; uint NotExistMask = (uint)H3DAnimTransformFlags.IsScaleXInexistent; for (int ElemIndex = 0; ElemIndex < 9; ElemIndex++) { Deserializer.BaseStream.Seek(Position, SeekOrigin.Begin); Position += 4; bool Constant = ((uint)Flags & ConstantMask) != 0; bool Exists = ((uint)Flags & NotExistMask) == 0; if (Exists) { H3DFloatKeyFrameGroup FrameGrp = H3DFloatKeyFrameGroup.ReadGroup(Deserializer, Constant); switch (ElemIndex) { case 0: _ScaleX = FrameGrp; break; case 1: _ScaleY = FrameGrp; break; case 2: _ScaleZ = FrameGrp; break; case 3: _RotationX = FrameGrp; break; case 4: _RotationY = FrameGrp; break; case 5: _RotationZ = FrameGrp; break; case 6: _TranslationX = FrameGrp; break; case 7: _TranslationY = FrameGrp; break; case 8: _TranslationZ = FrameGrp; break; } } ConstantMask <<= 1; NotExistMask <<= 1; if (ConstantMask == (uint)H3DAnimTransformFlags.IsRotationWConstant) { ConstantMask <<= 1; } } }