Esempio n. 1
0
        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);
        }