Ejemplo n.º 1
0
        private static void GUICurveField(Rect position, SerializedProperty maxCurve, SerializedProperty minCurve, Color color, Rect ranges, CurveFieldMouseDownCallback mouseDownCallback)
        {
            int   controlID = GUIUtility.GetControlID(0x4ec1c30f, EditorGUIUtility.native, position);
            Event current   = Event.current;

            switch (current.GetTypeForControl(controlID))
            {
            case EventType.MouseDown:
                if ((position.Contains(current.mousePosition) && (mouseDownCallback != null)) && mouseDownCallback(current.button, position, ranges))
                {
                    current.Use();
                }
                break;

            case EventType.Repaint:
            {
                Rect rect = position;
                if (minCurve == null)
                {
                    EditorGUIUtility.DrawCurveSwatch(rect, null, maxCurve, color, EditorGUI.kCurveBGColor, ranges);
                }
                else
                {
                    EditorGUIUtility.DrawRegionSwatch(rect, maxCurve, minCurve, color, EditorGUI.kCurveBGColor, ranges);
                }
                EditorStyles.colorPickerBox.Draw(rect, GUIContent.none, controlID, false);
                break;
            }

            case EventType.ValidateCommand:
                if (current.commandName == "UndoRedoPerformed")
                {
                    AnimationCurvePreviewCache.ClearCache();
                }
                break;
            }
        }
Ejemplo n.º 2
0
        private static void GUICurveField(Rect position, SerializedProperty maxCurve, SerializedProperty minCurve, Color color, Rect ranges, CurveFieldMouseDownCallback mouseDownCallback)
        {
            int controlID = GUIUtility.GetControlID(0x4ec1c30f, EditorGUIUtility.native, position);
            Event current = Event.current;
            switch (current.GetTypeForControl(controlID))
            {
                case EventType.MouseDown:
                    if ((position.Contains(current.mousePosition) && (mouseDownCallback != null)) && mouseDownCallback(current.button, position, ranges))
                    {
                        current.Use();
                    }
                    break;

                case EventType.Repaint:
                {
                    Rect rect = position;
                    if (minCurve == null)
                    {
                        EditorGUIUtility.DrawCurveSwatch(rect, null, maxCurve, color, EditorGUI.kCurveBGColor, ranges);
                    }
                    else
                    {
                        EditorGUIUtility.DrawRegionSwatch(rect, maxCurve, minCurve, color, EditorGUI.kCurveBGColor, ranges);
                    }
                    EditorStyles.colorPickerBox.Draw(rect, GUIContent.none, controlID, false);
                    break;
                }
                case EventType.ValidateCommand:
                    if (current.commandName == "UndoRedoPerformed")
                    {
                        AnimationCurvePreviewCache.ClearCache();
                    }
                    break;
            }
        }