private void SetTangent(int leftRight, Skill.Editor.CurveUtility.TangentMode mode) { if (Selection.Count > 0) { foreach (CurveKey ki in Selection) { Keyframe key = ki.Keyframe; CurveUtility.SetKeyBroken(ref key, true); if (leftRight == 2) { CurveUtility.SetKeyTangentMode(ref key, 0, mode); CurveUtility.SetKeyTangentMode(ref key, 1, mode); } else { CurveUtility.SetKeyTangentMode(ref key, leftRight, mode); if (CurveUtility.GetKeyTangentMode(key, 1 - leftRight) == CurveUtility.TangentMode.Smooth) { CurveUtility.SetKeyTangentMode(ref key, 1 - leftRight, CurveUtility.TangentMode.Editable); } } if ((mode == CurveUtility.TangentMode.Stepped) && ((leftRight == 0) || (leftRight == 2))) { key.inTangent = float.PositiveInfinity; } if ((mode == CurveUtility.TangentMode.Stepped) && ((leftRight == 1) || (leftRight == 2))) { key.outTangent = float.PositiveInfinity; } ki.Curve.MoveKey(ki.Index, key); CurveUtility.UpdateTangentsFromModeSurrounding(ki.Curve, ki.Index); } } }
public void SetBroken() { if (Selection.Count > 0) { foreach (CurveKey ki in Selection) { Keyframe key = ki.Keyframe; CurveUtility.SetKeyBroken(ref key, true); if (CurveUtility.GetKeyTangentMode(key, 1) == CurveUtility.TangentMode.Smooth) { CurveUtility.SetKeyTangentMode(ref key, 1, CurveUtility.TangentMode.Editable); } if (CurveUtility.GetKeyTangentMode(key, 0) == CurveUtility.TangentMode.Smooth) { CurveUtility.SetKeyTangentMode(ref key, 0, CurveUtility.TangentMode.Editable); } ki.Curve.MoveKey(ki.Index, key); CurveUtility.UpdateTangentsFromModeSurrounding(ki.Curve, ki.Index); } } }