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