Example #1
0
        public static void SetKeyModeFromContext(AnimationCurve curve, int keyIndex)
        {
            Keyframe key   = curve[keyIndex];
            bool     flag  = false;
            bool     flag2 = false;

            if (keyIndex > 0)
            {
                if (CurveUtility.GetKeyBroken(curve[keyIndex - 1]))
                {
                    flag = true;
                }
                if (CurveUtility.GetKeyTangentMode(curve[keyIndex - 1], 1) == TangentMode.Smooth)
                {
                    flag2 = true;
                }
            }
            if (keyIndex < curve.length - 1)
            {
                if (CurveUtility.GetKeyBroken(curve[keyIndex + 1]))
                {
                    flag = true;
                }
                if (CurveUtility.GetKeyTangentMode(curve[keyIndex + 1], 0) == TangentMode.Smooth)
                {
                    flag2 = true;
                }
            }
            CurveUtility.SetKeyBroken(ref key, flag);
            if (flag && !flag2)
            {
                if (keyIndex > 0)
                {
                    CurveUtility.SetKeyTangentMode(ref key, 0, CurveUtility.GetKeyTangentMode(curve[keyIndex - 1], 1));
                }
                if (keyIndex < curve.length - 1)
                {
                    CurveUtility.SetKeyTangentMode(ref key, 1, CurveUtility.GetKeyTangentMode(curve[keyIndex + 1], 0));
                }
            }
            else
            {
                TangentMode mode = TangentMode.Smooth;
                if (keyIndex > 0 && CurveUtility.GetKeyTangentMode(curve[keyIndex - 1], 1) != TangentMode.Smooth)
                {
                    mode = TangentMode.Editable;
                }
                if (keyIndex < curve.length - 1 && CurveUtility.GetKeyTangentMode(curve[keyIndex + 1], 0) != TangentMode.Smooth)
                {
                    mode = TangentMode.Editable;
                }
                CurveUtility.SetKeyTangentMode(ref key, 0, mode);
                CurveUtility.SetKeyTangentMode(ref key, 1, mode);
            }
            curve.MoveKey(keyIndex, key);
        }
        public void AddTangentMenuItems(GenericMenu menu, List <KeyIdentifier> keyList)
        {
            bool flag  = keyList.Count > 0;
            bool on    = flag;
            bool on2   = flag;
            bool on3   = flag;
            bool on4   = flag;
            bool flag2 = flag;
            bool flag3 = flag;
            bool flag4 = flag;
            bool flag5 = flag;
            bool flag6 = flag;
            bool flag7 = flag;

            foreach (KeyIdentifier current in keyList)
            {
                Keyframe    keyframe        = current.keyframe;
                TangentMode keyTangentMode  = CurveUtility.GetKeyTangentMode(keyframe, 0);
                TangentMode keyTangentMode2 = CurveUtility.GetKeyTangentMode(keyframe, 1);
                bool        keyBroken       = CurveUtility.GetKeyBroken(keyframe);
                if (keyTangentMode != TangentMode.Smooth || keyTangentMode2 != TangentMode.Smooth)
                {
                    on = false;
                }
                if (keyBroken || keyTangentMode != TangentMode.Editable || keyTangentMode2 != TangentMode.Editable)
                {
                    on2 = false;
                }
                if (keyBroken || keyTangentMode != TangentMode.Editable || keyframe.inTangent != 0f || keyTangentMode2 != TangentMode.Editable || keyframe.outTangent != 0f)
                {
                    on3 = false;
                }
                if (!keyBroken)
                {
                    on4 = false;
                }
                if (!keyBroken || keyTangentMode != TangentMode.Editable)
                {
                    flag2 = false;
                }
                if (!keyBroken || keyTangentMode != TangentMode.Linear)
                {
                    flag3 = false;
                }
                if (!keyBroken || keyTangentMode != TangentMode.Stepped)
                {
                    flag4 = false;
                }
                if (!keyBroken || keyTangentMode2 != TangentMode.Editable)
                {
                    flag5 = false;
                }
                if (!keyBroken || keyTangentMode2 != TangentMode.Linear)
                {
                    flag6 = false;
                }
                if (!keyBroken || keyTangentMode2 != TangentMode.Stepped)
                {
                    flag7 = false;
                }
            }
            if (flag)
            {
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupAuto"), on, new GenericMenu.MenuFunction2(this.SetSmooth), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupFreeSmooth"), on2, new GenericMenu.MenuFunction2(this.SetEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupFlat"), on3, new GenericMenu.MenuFunction2(this.SetFlat), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupBroken"), on4, new GenericMenu.MenuFunction2(this.SetBroken), keyList);
                menu.AddSeparator(string.Empty);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupLeftTangent/Free"), flag2, new GenericMenu.MenuFunction2(this.SetLeftEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupLeftTangent/Linear"), flag3, new GenericMenu.MenuFunction2(this.SetLeftLinear), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupLeftTangent/Constant"), flag4, new GenericMenu.MenuFunction2(this.SetLeftConstant), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupRightTangent/Free"), flag5, new GenericMenu.MenuFunction2(this.SetRightEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupRightTangent/Linear"), flag6, new GenericMenu.MenuFunction2(this.SetRightLinear), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupRightTangent/Constant"), flag7, new GenericMenu.MenuFunction2(this.SetRightConstant), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupBothTangents/Free"), flag5 && flag2, new GenericMenu.MenuFunction2(this.SetBothEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupBothTangents/Linear"), flag6 && flag3, new GenericMenu.MenuFunction2(this.SetBothLinear), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("CurveKeyPopupBothTangents/Constant"), flag7 && flag4, new GenericMenu.MenuFunction2(this.SetBothConstant), keyList);
            }
            else
            {
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupAuto"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupFreeSmooth"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupFlat"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupBroken"));
                menu.AddSeparator(string.Empty);
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupLeftTangent/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupLeftTangent/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupLeftTangent/Constant"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupRightTangent/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupRightTangent/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupRightTangent/Constant"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupBothTangents/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupBothTangents/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("CurveKeyPopupBothTangents/Constant"));
            }
        }
Example #3
0
        public void AddTangentMenuItems(GenericMenu menu, List <KeyIdentifier> keyList)
        {
            bool flag   = keyList.Count > 0;
            bool on     = flag;
            bool flag3  = flag;
            bool flag4  = flag;
            bool flag5  = flag;
            bool flag6  = flag;
            bool flag7  = flag;
            bool flag8  = flag;
            bool flag9  = flag;
            bool flag10 = flag;
            bool flag11 = flag;

            foreach (KeyIdentifier identifier in keyList)
            {
                Keyframe    key            = identifier.keyframe;
                TangentMode keyTangentMode = CurveUtility.GetKeyTangentMode(key, 0);
                TangentMode mode2          = CurveUtility.GetKeyTangentMode(key, 1);
                bool        keyBroken      = CurveUtility.GetKeyBroken(key);
                if ((keyTangentMode != TangentMode.Smooth) || (mode2 != TangentMode.Smooth))
                {
                    on = false;
                }
                if ((keyBroken || (keyTangentMode != TangentMode.Editable)) || (mode2 != TangentMode.Editable))
                {
                    flag3 = false;
                }
                if ((keyBroken || (keyTangentMode != TangentMode.Editable)) || (((key.inTangent != 0f) || (mode2 != TangentMode.Editable)) || (key.outTangent != 0f)))
                {
                    flag4 = false;
                }
                if (!keyBroken)
                {
                    flag5 = false;
                }
                if (!keyBroken || (keyTangentMode != TangentMode.Editable))
                {
                    flag6 = false;
                }
                if (!keyBroken || (keyTangentMode != TangentMode.Linear))
                {
                    flag7 = false;
                }
                if (!keyBroken || (keyTangentMode != TangentMode.Stepped))
                {
                    flag8 = false;
                }
                if (!keyBroken || (mode2 != TangentMode.Editable))
                {
                    flag9 = false;
                }
                if (!keyBroken || (mode2 != TangentMode.Linear))
                {
                    flag10 = false;
                }
                if (!keyBroken || (mode2 != TangentMode.Stepped))
                {
                    flag11 = false;
                }
            }
            if (flag)
            {
                menu.AddItem(EditorGUIUtility.TextContent("Auto"), on, new GenericMenu.MenuFunction2(this.SetSmooth), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Free Smooth"), flag3, new GenericMenu.MenuFunction2(this.SetEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Flat"), flag4, new GenericMenu.MenuFunction2(this.SetFlat), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Broken"), flag5, new GenericMenu.MenuFunction2(this.SetBroken), keyList);
                menu.AddSeparator(string.Empty);
                menu.AddItem(EditorGUIUtility.TextContent("Left Tangent/Free"), flag6, new GenericMenu.MenuFunction2(this.SetLeftEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Left Tangent/Linear"), flag7, new GenericMenu.MenuFunction2(this.SetLeftLinear), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Left Tangent/Constant"), flag8, new GenericMenu.MenuFunction2(this.SetLeftConstant), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Right Tangent/Free"), flag9, new GenericMenu.MenuFunction2(this.SetRightEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Right Tangent/Linear"), flag10, new GenericMenu.MenuFunction2(this.SetRightLinear), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Right Tangent/Constant"), flag11, new GenericMenu.MenuFunction2(this.SetRightConstant), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Both Tangents/Free"), flag9 && flag6, new GenericMenu.MenuFunction2(this.SetBothEditable), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Both Tangents/Linear"), flag10 && flag7, new GenericMenu.MenuFunction2(this.SetBothLinear), keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Both Tangents/Constant"), flag11 && flag8, new GenericMenu.MenuFunction2(this.SetBothConstant), keyList);
            }
            else
            {
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Auto"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Free Smooth"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Flat"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Broken"));
                menu.AddSeparator(string.Empty);
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Left Tangent/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Left Tangent/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Left Tangent/Constant"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Right Tangent/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Right Tangent/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Right Tangent/Constant"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Both Tangents/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Both Tangents/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Both Tangents/Constant"));
            }
        }
Example #4
0
        public void AddTangentMenuItems(GenericMenu menu, List <KeyIdentifier> keyList)
        {
            bool flag = keyList.Count > 0;
            bool on1  = flag;
            bool on2  = flag;
            bool on3  = flag;
            bool on4  = flag;
            bool on5  = flag;
            bool on6  = flag;
            bool on7  = flag;
            bool on8  = flag;
            bool on9  = flag;
            bool on10 = flag;

            using (List <KeyIdentifier> .Enumerator enumerator = keyList.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    Keyframe    keyframe        = enumerator.Current.keyframe;
                    TangentMode keyTangentMode1 = CurveUtility.GetKeyTangentMode(keyframe, 0);
                    TangentMode keyTangentMode2 = CurveUtility.GetKeyTangentMode(keyframe, 1);
                    bool        keyBroken       = CurveUtility.GetKeyBroken(keyframe);
                    if (keyTangentMode1 != TangentMode.Smooth || keyTangentMode2 != TangentMode.Smooth)
                    {
                        on1 = false;
                    }
                    if (keyBroken || keyTangentMode1 != TangentMode.Editable || keyTangentMode2 != TangentMode.Editable)
                    {
                        on2 = false;
                    }
                    if (keyBroken || keyTangentMode1 != TangentMode.Editable || ((double)keyframe.inTangent != 0.0 || keyTangentMode2 != TangentMode.Editable) || (double)keyframe.outTangent != 0.0)
                    {
                        on3 = false;
                    }
                    if (!keyBroken)
                    {
                        on4 = false;
                    }
                    if (!keyBroken || keyTangentMode1 != TangentMode.Editable)
                    {
                        on5 = false;
                    }
                    if (!keyBroken || keyTangentMode1 != TangentMode.Linear)
                    {
                        on6 = false;
                    }
                    if (!keyBroken || keyTangentMode1 != TangentMode.Stepped)
                    {
                        on7 = false;
                    }
                    if (!keyBroken || keyTangentMode2 != TangentMode.Editable)
                    {
                        on8 = false;
                    }
                    if (!keyBroken || keyTangentMode2 != TangentMode.Linear)
                    {
                        on9 = false;
                    }
                    if (!keyBroken || keyTangentMode2 != TangentMode.Stepped)
                    {
                        on10 = false;
                    }
                }
            }
            if (flag)
            {
                menu.AddItem(EditorGUIUtility.TextContent("Auto"), on1, new GenericMenu.MenuFunction2(this.SetSmooth), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Free Smooth"), on2, new GenericMenu.MenuFunction2(this.SetEditable), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Flat"), on3, new GenericMenu.MenuFunction2(this.SetFlat), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Broken"), on4, new GenericMenu.MenuFunction2(this.SetBroken), (object)keyList);
                menu.AddSeparator(string.Empty);
                menu.AddItem(EditorGUIUtility.TextContent("Left Tangent/Free"), on5, new GenericMenu.MenuFunction2(this.SetLeftEditable), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Left Tangent/Linear"), on6, new GenericMenu.MenuFunction2(this.SetLeftLinear), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Left Tangent/Constant"), on7, new GenericMenu.MenuFunction2(this.SetLeftConstant), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Right Tangent/Free"), on8, new GenericMenu.MenuFunction2(this.SetRightEditable), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Right Tangent/Linear"), on9, new GenericMenu.MenuFunction2(this.SetRightLinear), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Right Tangent/Constant"), on10, new GenericMenu.MenuFunction2(this.SetRightConstant), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Both Tangents/Free"), on8 && on5, new GenericMenu.MenuFunction2(this.SetBothEditable), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Both Tangents/Linear"), on9 && on6, new GenericMenu.MenuFunction2(this.SetBothLinear), (object)keyList);
                menu.AddItem(EditorGUIUtility.TextContent("Both Tangents/Constant"), on10 && on7, new GenericMenu.MenuFunction2(this.SetBothConstant), (object)keyList);
            }
            else
            {
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Auto"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Free Smooth"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Flat"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Broken"));
                menu.AddSeparator(string.Empty);
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Left Tangent/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Left Tangent/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Left Tangent/Constant"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Right Tangent/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Right Tangent/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Right Tangent/Constant"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Both Tangents/Free"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Both Tangents/Linear"));
                menu.AddDisabledItem(EditorGUIUtility.TextContent("Both Tangents/Constant"));
            }
        }