public static void AddKeyFrameToCurve(AnimationCurve curve, float time, float framerate, float value, bool stepped) { Keyframe keyframe = default(Keyframe); bool flag = true; int num = CurveEditUtility.GetKeyframeAtTime(curve, time, framerate); if (num != -1) { flag = false; keyframe = curve.get_Item(num); curve.RemoveKey(num); } keyframe.set_value(value); keyframe.set_time(CurveEditUtility.GetKeyTime(time, framerate)); num = curve.AddKey(keyframe); if (stepped) { AnimationUtility.SetKeyBroken(curve, num, stepped); AnimationUtility.SetKeyLeftTangentMode(curve, num, 3); AnimationUtility.SetKeyRightTangentMode(curve, num, 3); keyframe.set_outTangent(float.PositiveInfinity); keyframe.set_inTangent(float.PositiveInfinity); } else if (flag) { AnimationUtility.SetKeyLeftTangentMode(curve, num, 4); AnimationUtility.SetKeyRightTangentMode(curve, num, 4); } if (num != -1 && !stepped) { AnimationUtility.UpdateTangentsFromModeSurrounding(curve, num); AnimationUtility.SetKeyBroken(curve, num, false); } }
public static bool RemoveKeyFrameFromCurve(AnimationCurve curve, float time, float framerate) { int keyframeAtTime = CurveEditUtility.GetKeyframeAtTime(curve, time, framerate); bool result; if (keyframeAtTime == -1) { result = false; } else { curve.RemoveKey(keyframeAtTime); result = true; } return(result); }
public static void RemoveObjectKey(AnimationClip clip, EditorCurveBinding sourceBinding, double time) { AnimationClipCurveInfo curveInfo = AnimationClipCurveCache.Instance.GetCurveInfo(clip); int num = Array.IndexOf <EditorCurveBinding>(curveInfo.objectBindings, sourceBinding); if (num >= 0) { ObjectReferenceKeyframe[] array = curveInfo.objectCurves[num]; int keyframeAtTime = CurveEditUtility.GetKeyframeAtTime(array, (float)time, clip.get_frameRate()); if (keyframeAtTime >= 0) { ArrayUtility.RemoveAt <ObjectReferenceKeyframe>(ref array, keyframeAtTime); AnimationUtility.SetObjectReferenceCurve(clip, sourceBinding, array); EditorUtility.SetDirty(clip); } } }