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); } } }
public SelectionState GetSelectionState() { SelectionState state = new SelectionState(); state.SelectionCount = Selection.Count; bool hasSelected = Selection.Count > 0; state.Auto = hasSelected; state.FreeSmooth = hasSelected; state.Flat = hasSelected; state.Broken = hasSelected; state.LeftFree = hasSelected; state.LeftLinear = hasSelected; state.LeftConstant = hasSelected; state.RightFree = hasSelected; state.RightLinear = hasSelected; state.RightConstant = hasSelected; foreach (CurveKey ki in Selection) { Keyframe key = ki.Keyframe; CurveUtility.TangentMode keyTangentMode = CurveUtility.GetKeyTangentMode(key, 0); CurveUtility.TangentMode mode2 = CurveUtility.GetKeyTangentMode(key, 1); bool keyBroken = CurveUtility.GetKeyBroken(key); if ((keyTangentMode != CurveUtility.TangentMode.Smooth) || (mode2 != CurveUtility.TangentMode.Smooth)) { state.Auto = false; } if ((keyBroken || (keyTangentMode != CurveUtility.TangentMode.Editable)) || (mode2 != CurveUtility.TangentMode.Editable)) { state.FreeSmooth = false; } if ((keyBroken || (keyTangentMode != CurveUtility.TangentMode.Editable)) || (((key.inTangent != 0f) || (mode2 != CurveUtility.TangentMode.Editable)) || (key.outTangent != 0f))) { state.Flat = false; } if (!keyBroken) { state.Broken = false; } if (!keyBroken || (keyTangentMode != CurveUtility.TangentMode.Editable)) { state.LeftFree = false; } if (!keyBroken || (keyTangentMode != CurveUtility.TangentMode.Linear)) { state.LeftLinear = false; } if (!keyBroken || (keyTangentMode != CurveUtility.TangentMode.Stepped)) { state.LeftConstant = false; } if (!keyBroken || (mode2 != CurveUtility.TangentMode.Editable)) { state.RightFree = false; } if (!keyBroken || (mode2 != CurveUtility.TangentMode.Linear)) { state.RightLinear = false; } if (!keyBroken || (mode2 != CurveUtility.TangentMode.Stepped)) { state.RightConstant = false; } } return(state); }