private static void DrawDividerIcon(int instanceId, Rect selectionRect)
        {
            var gameObject = (GameObject)EditorUtility.InstanceIDToObject(instanceId);

            if (gameObject == null)
            {
                return;
            }

            var hasChildren = gameObject.transform.childCount > 0;

            if (hasChildren)
            {
                return;
            }

            var iconRect = new Rect(selectionRect)
            {
                width = 16f
            };

            if (IsShowInSearch(iconRect))
            {
                return;
            }
            iconRect.x -= 16f;
            GUI.DrawTexture(iconRect, RainbowHierarchyEditorUtility.GetDividerIcon());
        }
        //---------------------------------------------------------------------
        // Helpers
        //---------------------------------------------------------------------

        private void ButtonSettings(Rect rect)
        {
            var icon = RainbowHierarchyEditorUtility.GetSettingsButtonIcon();

            if (!GUI.Button(rect, new GUIContent(icon, "Settings"), GUIStyle.none))
            {
                return;
            }
            Selection.activeObject = _rainbowHierarchySceneConf;
            Close();
        }
        private void ButtonDefault(Rect rect)
        {
            var icon = RainbowHierarchyEditorUtility.GetDeleteButtonIcon();

            if (!GUI.Button(rect, new GUIContent(icon, "Revert to Default"), GUIStyle.none))
            {
                return;
            }
            _currentHierarchyItem.Icon                  = null;
            _currentHierarchyItem.IsIconRecursive       = false;
            _currentHierarchyItem.IsIconCustom          = false;
            _currentHierarchyItem.Background            = null;
            _currentHierarchyItem.IsBackgroundRecursive = false;
        }
        private static void DrawEditIcon(int instanceId, Rect selectionRect)
        {
            if ((Event.current.modifiers & RainbowHierarchyPreferences.ModifierKey) == EventModifiers.None)
            {
                _multiSelection = false;
                return;
            }

            var gameObject = (GameObject)EditorUtility.InstanceIDToObject(instanceId);

            if (gameObject == null)
            {
                return;
            }

            var isMouseOver = selectionRect.Contains(Event.current.mousePosition);

            _multiSelection = IsSelected(gameObject) ? isMouseOver || _multiSelection : !isMouseOver && _multiSelection;

            // if mouse is not over current folder icon or selected group
            if (!isMouseOver && (!IsSelected(gameObject) || !_multiSelection))
            {
                return;
            }

            var editIcon = RainbowHierarchyEditorUtility.GetEditIcon(EditorGUIUtility.isProSkin);

            DrawCustomIcon(editIcon, selectionRect);

            if (GUI.Button(selectionRect, GUIContent.none, GUIStyle.none))
            {
                ShowPopupWindow(selectionRect, gameObject);
            }

            EditorApplication.RepaintHierarchyWindow();
        }
        //---------------------------------------------------------------------
        // Delegates
        //---------------------------------------------------------------------

        private static void HierarchyWindowChanged()
        {
            RainbowHierarchyEditorUtility.UpdateSceneConfigVisibility(!RainbowHierarchyPreferences.HideConfig);
        }
예제 #6
0
        //---------------------------------------------------------------------
        // Helpers
        //---------------------------------------------------------------------

        private static Vector2 CalcWindowPosition()
        {
            return(RainbowHierarchyEditorUtility.GetHierarchyWindow().position.position + new Vector2(10f, 30f));
        }