Пример #1
0
        public void ChangeCurve(string val)
        {
            if (string.IsNullOrEmpty(val))
            {
                return;
            }
            _changeCurveJSON.valNoCallback = "";

            foreach (var target in animationEditContext.GetAllOrSelectedTargets().OfType <ICurveAnimationTarget>())
            {
                target.StartBulkUpdates();
                try
                {
                    var leadCurve = target.GetLeadCurve();
                    for (var key = 0; key < leadCurve.length; key++)
                    {
                        var keyTime = leadCurve.GetKeyframeByKey(key).time;
                        if (keyTime >= _startJSON.valNoCallback && keyTime <= _endJSON.valNoCallback)
                        {
                            target.ChangeCurve(keyTime, CurveTypeValues.ToInt(val));
                        }
                    }
                }
                finally
                {
                    target.EndBulkUpdates();
                }
            }
        }
Пример #2
0
        private void ChangeCurve(string val)
        {
            if (!_animationEditContext.CanEdit())
            {
                RefreshCurrentCurveType(_animationEditContext.clipTime);
                return;
            }

            if (string.IsNullOrEmpty(val) || val.StartsWith("("))
            {
                RefreshCurrentCurveType(_animationEditContext.clipTime);
                return;
            }
            var time = _animationEditContext.clipTime.Snap();

            var curveType = CurveTypeValues.ToInt(val);

            foreach (var target in _animationEditContext.GetAllOrSelectedTargets().OfType <ICurveAnimationTarget>())
            {
                target.ChangeCurve(time, curveType);
            }

            if (curveType == CurveTypeValues.CopyPrevious)
            {
                _animationEditContext.Sample();
            }

            RefreshCurrentCurveType(_animationEditContext.clipTime);
        }
        private JSONNode SerializeCurve(AnimationCurve curve, SortedDictionary <int, KeyframeSettings> settings = null)
        {
            var curveJSON = new JSONArray();

            for (var key = 0; key < curve.length; key++)
            {
                var keyframe   = curve[key];
                var ms         = keyframe.time.ToMilliseconds();
                var curveEntry = new JSONClass
                {
                    ["t"]  = keyframe.time.ToString(CultureInfo.InvariantCulture),
                    ["v"]  = keyframe.value.ToString(CultureInfo.InvariantCulture),
                    ["c"]  = settings == null ? "0" : (settings.ContainsKey(ms) ? CurveTypeValues.ToInt(settings[ms].curveType).ToString() : "0"),
                    ["ti"] = keyframe.inTangent.ToString(CultureInfo.InvariantCulture),
                    ["to"] = keyframe.outTangent.ToString(CultureInfo.InvariantCulture)
                };
                curveJSON.Add(curveEntry);
            }

            return(curveJSON);
        }