private void DeserializeKeyFrame(Variable variable, KeyFrameData data) { switch (data.DataType) { #region Linear case KeyFrameUnion.LinearKeyFrameData_Int16: { var frame = data.GetData <LinearKeyFrameData_Int16>(new LinearKeyFrameData_Int16()); AddLinearFrame((Variable <short>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.LinearKeyFrameData_Int32: { var frame = data.GetData <LinearKeyFrameData_Int32>(new LinearKeyFrameData_Int32()); AddLinearFrame((Variable <int>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.LinearKeyFrameData_Int64: { var frame = data.GetData <LinearKeyFrameData_Int64>(new LinearKeyFrameData_Int64()); AddLinearFrame((Variable <long>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.LinearKeyFrameData_Float: { var frame = data.GetData <LinearKeyFrameData_Float>(new LinearKeyFrameData_Float()); AddLinearFrame((Variable <float>)variable, frame.Time, frame.Value); } break; #endregion #region Pulse case KeyFrameUnion.PulseKeyFrameData_Int16: { var frame = data.GetData <PulseKeyFrameData_Int16>(new PulseKeyFrameData_Int16()); AddPulseFrame((Variable <short>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.PulseKeyFrameData_Int32: { var frame = data.GetData <PulseKeyFrameData_Int32>(new PulseKeyFrameData_Int32()); AddPulseFrame((Variable <int>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.PulseKeyFrameData_Int64: { var frame = data.GetData <PulseKeyFrameData_Int64>(new PulseKeyFrameData_Int64()); AddPulseFrame((Variable <long>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.PulseKeyFrameData_Float: { var frame = data.GetData <PulseKeyFrameData_Float>(new PulseKeyFrameData_Float()); AddPulseFrame((Variable <float>)variable, frame.Time, frame.Value); } break; #endregion #region Step case KeyFrameUnion.StepKeyFrameData_Boolean: { var frame = data.GetData <StepKeyFrameData_Boolean>(new StepKeyFrameData_Boolean()); AddStepFrame((Variable <bool>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.StepKeyFrameData_Int16: { var frame = data.GetData <StepKeyFrameData_Int16>(new StepKeyFrameData_Int16()); AddStepFrame((Variable <short>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.StepKeyFrameData_Int32: { var frame = data.GetData <StepKeyFrameData_Int32>(new StepKeyFrameData_Int32()); AddStepFrame((Variable <int>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.StepKeyFrameData_Int64: { var frame = data.GetData <StepKeyFrameData_Int64>(new StepKeyFrameData_Int64()); AddStepFrame((Variable <long>)variable, frame.Time, frame.Value); } break; case KeyFrameUnion.StepKeyFrameData_Float: { var frame = data.GetData <StepKeyFrameData_Float>(new StepKeyFrameData_Float()); AddStepFrame((Variable <float>)variable, frame.Time, frame.Value); } break; #endregion default: throw new NotSupportedException("Unknown type of keyFrame"); } }