Пример #1
0
        public SoftwareFCurve(RMX_ActionFCurve fcurve)
        {
            switch (fcurve.Type)
            {
                case "OBJECT": Type = FCurveTypes.Object; break;
                case "BONE": Type = FCurveTypes.Bone; break;
                default: Debug.ThrowError("", "Unsuported type: " + fcurve.Type); break;
            }

            DataPath = fcurve.DataPath;
            Index = fcurve.Index;

            var values = fcurve.Coordinates.Values;
            var types = fcurve.InterpolationTypes.Content;
            KeyFrames = new List<SoftwareKeyFrame>();
            int i2 = 0, loop = values.Length / 2;
            for (int i = 0; i != loop; ++i)
            {
                InterpolationTypes interpolationType = InterpolationTypes.Bezier;
                switch (types[i])
                {
                    case 'B': interpolationType = InterpolationTypes.Bezier; break;
                    case 'L': interpolationType = InterpolationTypes.Linear; break;
                    case 'C': interpolationType = InterpolationTypes.Constant; break;
                }

                KeyFrames.Add(new SoftwareKeyFrame(new Vector2(values[i2], values[i2+1]), interpolationType));
                i2 += 2;
            }
        }
Пример #2
0
        public SoftwareFCurve(RMX_ActionFCurve fcurve)
        {
            switch (fcurve.Type)
            {
            case "OBJECT": Type = FCurveTypes.Object; break;

            case "BONE": Type = FCurveTypes.Bone; break;

            default: Debug.ThrowError("", "Unsuported type: " + fcurve.Type); break;
            }

            DataPath = fcurve.DataPath;
            Index    = fcurve.Index;

            var values = fcurve.Coordinates.Values;
            var types  = fcurve.InterpolationTypes.Content;

            KeyFrames = new List <SoftwareKeyFrame>();
            int i2 = 0, loop = values.Length / 2;

            for (int i = 0; i != loop; ++i)
            {
                InterpolationTypes interpolationType = InterpolationTypes.Bezier;
                switch (types[i])
                {
                case 'B': interpolationType = InterpolationTypes.Bezier; break;

                case 'L': interpolationType = InterpolationTypes.Linear; break;

                case 'C': interpolationType = InterpolationTypes.Constant; break;
                }

                KeyFrames.Add(new SoftwareKeyFrame(new Vector2(values[i2], values[i2 + 1]), interpolationType));
                i2 += 2;
            }
        }