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; }
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(); } }
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(); } }
[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); } }
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(); } }