private bool addKeyOnUserInteraction(float value, float curveValue, AnimationCurve curve, float scrubberPosition, bool inArea = true, float theshold = 0.000001f) { var time = (float)Mathf.RoundToInt(scrubberPosition * DirectorWindow.directorControl.frameRate) / DirectorWindow.directorControl.frameRate; bool differenceFound = false; var v = Math.Abs(value - curveValue); if (v > theshold && !inArea) { differenceFound = true; if (hasUserInteracted) { AddOrMoveKey(time, curve, value); } } else if (Event.current.keyCode == KeyCode.K) { AnimationKeyTime akt = AnimationKeyTime.Time(time, DirectorWindow.directorControl.frameRate); for (int j = 0; j < curve.length; j++) { Keyframe k = curve[j]; if (akt.ContainsTime(k.time)) { return(false); } } Keyframe kf = new Keyframe(time, value); AnimationCurveHelper.AddKey(curve, kf, akt); differenceFound = true; } else { RecordNeedKeyframeCurve(time, curve, value); } return(differenceFound); }
private bool addKeyOnUserInteraction(float value, float curveValue, AnimationCurve curve, float scrubberPosition) { bool differenceFound = false; if (!(Math.Abs(value - curveValue) < THRESHOLD)) { differenceFound = true; if (hasUserInteracted) { bool doesKeyExist = false; for (int j = 0; j < curve.length; j++) { Keyframe k = curve[j]; if (k.time == scrubberPosition) { Keyframe newKeyframe = new Keyframe(k.time, value, k.inTangent, k.outTangent); newKeyframe.tangentMode = k.tangentMode; AnimationCurveHelper.MoveKey(curve, j, newKeyframe); doesKeyExist = true; } } if (!doesKeyExist) { Keyframe kf = new Keyframe(scrubberPosition, value); AnimationCurveHelper.AddKey(curve, kf); } } } return(differenceFound); }
private void AddOrMoveKey(float time, AnimationCurve curve, float value) { bool doesKeyExist = false; AnimationKeyTime akt = AnimationKeyTime.Time(time, DirectorWindow.directorControl.frameRate); for (int j = 0; j < curve.length; j++) { Keyframe k = curve[j]; if (akt.ContainsTime(k.time)) { Keyframe newKeyframe = new Keyframe(k.time, value, k.inTangent, k.outTangent); AnimationCurveHelper.MoveKey(curve, j, newKeyframe); doesKeyExist = true; } } if (!doesKeyExist) { Keyframe kf = new Keyframe(time, value); AnimationCurveHelper.AddKey(curve, kf, akt); } }