private void EnsureRenamingCreatedHierarchyFolder()
        {
            var window = HierarchyWindowUtility.GetHierarchyWindow();

            if (EditorWindow.focusedWindow != window)
            {
                window.Focus();
                StartRenamingCreatedHierarchyFolder();
                return;
            }
        }
        // Called when an EditorTool is made the active tool.
        private void OnActivate()
        {
            RestorePreviousTool();

            var window = HierarchyWindowUtility.GetHierarchyWindow();

            if (window != null)
            {
                window.Focus();
                EditorApplication.delayCall += StartRenamingCreatedHierarchyFolder;
            }

            HierarchyFolderMenuItems.CreateHierarchyFolder();
        }
        private void StartRenamingCreatedHierarchyFolder()
        {
            var window = HierarchyWindowUtility.GetHierarchyWindow();

            if (EditorWindow.focusedWindow != window)
            {
                window.Focus();
                EditorApplication.delayCall += StartRenamingCreatedHierarchyFolder;
                return;
            }

            var sendEvent = Event.KeyboardEvent("F2");

            Event.current = sendEvent;
            window.SendEvent(sendEvent);

            EditorApplication.delayCall += EnsureRenamingCreatedHierarchyFolder;
        }
Example #4
0
        internal static void CreateHierarchyFolderSibling()
        {
            var placeBelow  = Selection.activeTransform;
            var setParent   = placeBelow == null ? null : placeBelow.parent;
            int moveToIndex = -1;

                        #if UNITY_2018_3_OR_NEWER
            var prefabStage = PrefabStageUtility.GetCurrentPrefabStage();
            if (prefabStage != null)
            {
                if (placeBelow == null || placeBelow.gameObject.scene != prefabStage.scene || placeBelow.gameObject == prefabStage.prefabContentsRoot)
                {
                    setParent  = prefabStage.prefabContentsRoot.transform;
                    placeBelow = null;
                }
            }
                        #endif

            if (placeBelow != null)
            {
                moveToIndex = placeBelow.GetSiblingIndex();
            }

            var folder = CreateHierarchyFolderInternal(placeBelow is RectTransform);

            if (setParent != null)
            {
                folder.transform.UndoableSetParent(setParent, "Hierarchy Folder");
            }
            if (moveToIndex != -1)
            {
                folder.transform.SetSiblingIndex(moveToIndex);
            }

            Undo.RegisterCreatedObjectUndo(folder, "Hierarchy Folder");

            Selection.activeGameObject = folder;

            var hierarchyWindow = HierarchyWindowUtility.GetHierarchyWindow();
            if (hierarchyWindow != null)
            {
                hierarchyWindow.Focus();
            }
        }
Example #5
0
        internal static void CreateHierarchyFolderChild([CanBeNull] Transform parent)
        {
            var folder = CreateHierarchyFolderInternal(parent is RectTransform);

            if (parent != null)
            {
                folder.transform.UndoableSetParent(parent, "Hierarchy Folder");
            }

            Undo.RegisterCreatedObjectUndo(folder, "Hierarchy Folder");

            Selection.activeGameObject = folder;

            var hierarchyWindow = HierarchyWindowUtility.GetHierarchyWindow();

            if (hierarchyWindow != null)
            {
                hierarchyWindow.Focus();
            }
        }
Example #6
0
        [MethodImpl(256)]         //256 = MethodImplOptions.AggressiveInlining in .NET 4.5. and later
        private static void UpdateExpandedIDs()
        {
            if (expandedIDsProperty == null)
            {
                if (sceneHierarchyWindowType == null)
                {
                    var unityEditorAssembly = Assembly.GetAssembly(typeof(EditorWindow));
                    sceneHierarchyWindowType = unityEditorAssembly.GetType("UnityEditor.SceneHierarchyWindow");
                }

                var hierarchyWindow = HierarchyWindowUtility.GetHierarchyWindow();
                if (hierarchyWindow == null)
                {
                    Selection.selectionChanged -= OnSelectionChanged;
                    Selection.selectionChanged += OnSelectionChanged;
                    return;
                }

                var sceneHierarchyProperty = sceneHierarchyWindowType.GetProperty("sceneHierarchy", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                if (sceneHierarchyProperty == null)
                {
                    return;
                }
                var sceneHierarchy = sceneHierarchyProperty.GetValue(hierarchyWindow, null);

                var treeViewStateProperty = sceneHierarchy.GetType().GetProperty("treeViewState", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                if (treeViewStateProperty == null)
                {
                    return;
                }
                treeViewState = treeViewStateProperty.GetValue(sceneHierarchy, null);

                expandedIDsProperty = treeViewState.GetType().GetProperty("expandedIDs", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            }

            if (expandedIDsProperty != null)
            {
                expandedIDs = (List <int>)expandedIDsProperty.GetValue(treeViewState, null);
            }
        }
Example #7
0
        internal static void CreateHierarchyFolderSibling()
        {
            var selected = Selection.activeTransform;

            var folder = CreateHierarchyFolderInternal(selected is RectTransform);

            if (selected != null)
            {
                int moveToIndex = selected.GetSiblingIndex();
                folder.transform.UndoableSetParent(selected.parent, "Hierarchy Folder");
                folder.transform.SetSiblingIndex(moveToIndex);
            }

            Undo.RegisterCreatedObjectUndo(folder, "Hierarchy Folder");

            Selection.activeGameObject = folder;

            var hierarchyWindow = HierarchyWindowUtility.GetHierarchyWindow();

            if (hierarchyWindow != null)
            {
                hierarchyWindow.Focus();
            }
        }