public Rect OnGUI(Rect rect)
        {
            if (m_Direction == EGUIDirection.Horizontal)
            {
                if (rect.height < 2.0f)
                {
                    rect.height = 2.0f;
                }

                EGUI.DrawHorizontalLine(rect, Color.grey);

                EditorGUIUtility.AddCursorRect(rect, MouseCursor.ResizeVertical);
            }
            else if (m_Direction == EGUIDirection.Vertical)
            {
                if (rect.width < 2.0f)
                {
                    rect.width = 2.0f;
                }
                EGUI.DrawVerticalLine(rect, Color.grey);

                EditorGUIUtility.AddCursorRect(rect, MouseCursor.ResizeHorizontal);
            }

            if (Event.current != null)
            {
                if (Event.current.type == EventType.MouseDown && Event.current.button == 0 && rect.Contains(Event.current.mousePosition))
                {
                    m_IsDragging = true;
                    Event.current.Use();
                }
                else if (m_IsDragging && Event.current.type == EventType.MouseDrag)
                {
                    if (m_Direction == EGUIDirection.Horizontal)
                    {
                        rect.y += Event.current.delta.y;
                    }
                    else if (m_Direction == EGUIDirection.Vertical)
                    {
                        rect.x += Event.current.delta.x;
                    }
                    m_Window.Repaint();
                }
                else if (m_IsDragging && Event.current.type == EventType.MouseUp)
                {
                    m_IsDragging = false;
                    Event.current.Use();
                }
            }

            return(rect);
        }
        private static int DrawFlagsEnumButton(string label, Type valueType, int value, params GUILayoutOption[] options)
        {
            string[] enumNames = Enum.GetNames(valueType);

            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.PrefixLabel(label);
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Everything", EditorStyles.toolbarButton, GUILayout.Width(120)))
                {
                    value = 0;
                    for (int i = 0; i < enumNames.Length; ++i)
                    {
                        int tValue = Convert.ToInt32(Enum.Parse(valueType, enumNames[i]));
                        value |= tValue;
                    }
                }
                if (GUILayout.Button("Nothing", EditorStyles.toolbarButton, GUILayout.Width(120)))
                {
                    value = 0;
                }
            }
            EditorGUILayout.EndHorizontal();
            EGUI.BeginIndent();
            {
                EditorGUILayout.BeginHorizontal();
                {
                    for (int i = 0; i < enumNames.Length; ++i)
                    {
                        int tValue = Convert.ToInt32(Enum.Parse(valueType, enumNames[i]));

                        bool isSelected    = (value & tValue) > 0;
                        bool newIsSelected = GUILayout.Toggle(isSelected, enumNames[i], EditorStyles.toolbarButton, options);
                        if (newIsSelected != isSelected)
                        {
                            if (newIsSelected)
                            {
                                value |= tValue;
                            }
                            else
                            {
                                value &= ~tValue;
                            }
                        }
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EGUI.EndIndent();

            return(value);
        }
        public static void DrawVerticalLine(Color color, float thickness = 0.75f, float padding = 6.0f)
        {
            Rect rect = EditorGUILayout.GetControlRect(UnityEngine.GUILayout.Width(padding + thickness), UnityEngine.GUILayout.ExpandHeight(true));

            EGUI.DrawVerticalLine(rect, color, thickness);
        }
Beispiel #4
0
        public static bool DrawBoxedFoldout(bool isFoldout, GUIContent title)
        {
            Rect rect = EditorGUILayout.GetControlRect(GUILayout.ExpandWidth(true));

            return(EGUI.DrawBoxedFoldout(rect, isFoldout, title));
        }
Beispiel #5
0
        public static void DrawHorizontalLine(Color color, float thickness = 0.75f, float padding = 3.0f)
        {
            Rect rect = EditorGUILayout.GetControlRect(UnityEngine.GUILayout.Height(padding * 2 + thickness), UnityEngine.GUILayout.ExpandWidth(true));

            EGUI.DrawHorizontalLine(rect, color, thickness);
        }