Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
 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);
         }
     }
 }
Ejemplo n.º 3
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);
        }