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(); } } }
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); }