Exemplo n.º 1
0
        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");
            }
        }