private Scene[] GetModifiedScenes(List <int> handles) { return((from handle in handles select EditorSceneManager.GetSceneByHandle(handle) into scene where scene.isDirty select scene).ToArray <Scene>()); }
private bool IsValidHierarchyInstanceID(int instanceID) { bool isScene = SceneHierarchy.IsSceneHeaderInHierarchyWindow(EditorSceneManager.GetSceneByHandle(instanceID)); bool isGameObject = InternalEditorUtility.GetTypeWithoutLoadingObject(instanceID) == typeof(GameObject); return(isScene || isGameObject); }
private bool IsValidHierarchyInstanceID(int instanceID) { bool flag = SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(EditorSceneManager.GetSceneByHandle(instanceID)); bool flag2 = InternalEditorUtility.GetClassIDWithoutLoadingObject(instanceID) == this.kGameObjectClassID; return(flag || flag2); }
private void SelectSceneAsset(object userData) { int handle = (int)userData; string guid = AssetDatabase.AssetPathToGUID(EditorSceneManager.GetSceneByHandle(handle).path); int instanceIDFromGUID = AssetDatabase.GetInstanceIDFromGUID(guid); Selection.activeInstanceID = instanceIDFromGUID; EditorGUIUtility.PingObject(instanceIDFromGUID); }
private void SaveSceneAs(object userdata) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle((int)userdata); if (!sceneByHandle.isLoaded) { return; } EditorSceneManager.SaveSceneAs(sceneByHandle); }
private void SaveSceneAs(object userdata) { int handle = (int)userdata; Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(handle); if (sceneByHandle.isLoaded) { EditorSceneManager.SaveSceneAs(sceneByHandle); } }
private List <int> GetSelectedGameObjects() { List <int> intList = new List <int>(); foreach (int handle in this.m_TreeView.GetSelection()) { if (!SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(EditorSceneManager.GetSceneByHandle(handle))) { intList.Add(handle); } } return(intList); }
private void SaveSelectedScenes(object userdata) { List <int> selectedScenes = this.GetSelectedScenes(); foreach (int current in selectedScenes) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(current); if (sceneByHandle.isLoaded) { EditorSceneManager.SaveScene(sceneByHandle); } } }
private void CloseSelectedScenes(bool removeScenes) { List <int> selectedScenes = this.GetSelectedScenes(); if (EditorSceneManager.SaveModifiedScenesIfUserWantsTo(this.GetModifiedScenes(selectedScenes))) { foreach (int num in selectedScenes) { EditorSceneManager.CloseScene(EditorSceneManager.GetSceneByHandle(num), removeScenes); } EditorApplication.RequestRepaintAllViews(); } }
private int GetNumLoadedScenesInSelection() { int num = 0; foreach (int current in this.GetSelectedScenes()) { if (EditorSceneManager.GetSceneByHandle(current).isLoaded) { num++; } } return(num); }
private void SaveSelectedScenes(object userdata) { using (List <int> .Enumerator enumerator = this.GetSelectedScenes().GetEnumerator()) { while (enumerator.MoveNext()) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(enumerator.Current); if (sceneByHandle.isLoaded) { EditorSceneManager.SaveScene(sceneByHandle); } } } }
private void LoadSelectedScenes(object userdata) { List <int> selectedScenes = this.GetSelectedScenes(); foreach (int current in selectedScenes) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(current); if (!sceneByHandle.isLoaded) { EditorSceneManager.OpenScene(sceneByHandle.path, OpenSceneMode.Additive); } } EditorApplication.RequestRepaintAllViews(); }
private void LoadSelectedScenes(object userdata) { using (List <int> .Enumerator enumerator = this.GetSelectedScenes().GetEnumerator()) { while (enumerator.MoveNext()) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(enumerator.Current); if (!sceneByHandle.isLoaded) { EditorSceneManager.OpenScene(sceneByHandle.path, OpenSceneMode.Additive); } } } EditorApplication.RequestRepaintAllViews(); }
private List <Scene> GetDraggedScenes(List <int> draggedItemIDs) { List <Scene> list = new List <Scene>(); foreach (int current in draggedItemIDs) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(current); if (!SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(sceneByHandle)) { return(null); } list.Add(sceneByHandle); } return(list); }
private void ItemContextClick(int contextClickedItemID) { Event.current.Use(); GenericMenu menu = new GenericMenu(); if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(EditorSceneManager.GetSceneByHandle(contextClickedItemID))) { this.CreateMultiSceneHeaderContextClick(menu, contextClickedItemID); } else { this.CreateGameObjectContextClick(menu, contextClickedItemID); } menu.ShowAsContext(); }
private void TreeViewItemDoubleClicked(int instanceID) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(instanceID); if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(sceneByHandle)) { if (sceneByHandle.isLoaded) { SceneManager.SetActiveScene(sceneByHandle); } } else { SceneView.FrameLastActiveSceneView(); } }
private List <int> GetSelectedGameObjects() { List <int> list = new List <int>(); int[] selection = this.m_TreeView.GetSelection(); int[] array = selection; for (int i = 0; i < array.Length; i++) { int num = array[i]; if (!SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(EditorSceneManager.GetSceneByHandle(num))) { list.Add(num); } } return(list); }
private List <Scene> GetDraggedScenes(List <int> draggedItemIDs) { List <Scene> scenes = new List <Scene>(); foreach (int id in draggedItemIDs) { Scene scene = EditorSceneManager.GetSceneByHandle(id); if (!SceneHierarchy.IsSceneHeaderInHierarchyWindow(scene)) { return(null); } scenes.Add(scene); } return(scenes); }
static bool IsPrefabStageHeader(GameObjectTreeViewItem item) { if (!item.isSceneHeader) { return(false); } Scene scene = EditorSceneManager.GetSceneByHandle(item.id); if (!scene.IsValid()) { return(false); } return(EditorSceneManager.IsPreviewScene(scene)); }
private int GetNumLoadedScenesInSelection() { int num = 0; using (List <int> .Enumerator enumerator = this.GetSelectedScenes().GetEnumerator()) { while (enumerator.MoveNext()) { if (EditorSceneManager.GetSceneByHandle(enumerator.Current).isLoaded) { ++num; } } } return(num); }
private void CloseSelectedScenes(bool removeScenes) { List <int> selectedScenes = this.GetSelectedScenes(); Scene[] modifiedScenes = this.GetModifiedScenes(selectedScenes); bool flag = !EditorSceneManager.SaveModifiedScenesIfUserWantsTo(modifiedScenes); if (flag) { return; } foreach (int current in selectedScenes) { EditorSceneManager.CloseScene(EditorSceneManager.GetSceneByHandle(current), removeScenes); } EditorApplication.RequestRepaintAllViews(); }
private void CloseSelectedScenes(bool removeScenes) { List <int> selectedScenes = this.GetSelectedScenes(); if (!EditorSceneManager.SaveModifiedScenesIfUserWantsTo(this.GetModifiedScenes(selectedScenes))) { return; } using (List <int> .Enumerator enumerator = selectedScenes.GetEnumerator()) { while (enumerator.MoveNext()) { EditorSceneManager.CloseScene(EditorSceneManager.GetSceneByHandle(enumerator.Current), removeScenes); } } EditorApplication.RequestRepaintAllViews(); }
Transform GetTransformParentForDrop(int gameObjectOrSceneInstanceID, DropPosition dropPosition) { var obj = EditorUtility.InstanceIDToObject(gameObjectOrSceneInstanceID); if (obj != null) { // Find transform parent from GameObject var go = obj as GameObject; if (go == null) { throw new InvalidOperationException("Unexpected UnityEngine.Object type in Hierarchy " + obj.GetType()); } switch (dropPosition) { case DropPosition.Upon: return(go.transform); case DropPosition.Below: case DropPosition.Above: if (go.transform.parent == null) { var subSceneInfo = SubSceneGUI.GetSubSceneInfo(go.scene); if (subSceneInfo.isValid) { return(subSceneInfo.transform); } } return(go.transform.parent); default: throw new InvalidOperationException("Unhandled enum " + dropPosition); } } else { // Find transform parent from Scene var scene = EditorSceneManager.GetSceneByHandle(gameObjectOrSceneInstanceID); var subSceneInfo = SubSceneGUI.GetSubSceneInfo(scene); if (subSceneInfo.isValid) { return(subSceneInfo.transform); } return(null); // root scene has no transform parent } }
private List <Scene> GetDraggedScenes(List <int> draggedItemIDs) { List <Scene> sceneList = new List <Scene>(); using (List <int> .Enumerator enumerator = draggedItemIDs.GetEnumerator()) { while (enumerator.MoveNext()) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(enumerator.Current); if (!SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(sceneByHandle)) { return((List <Scene>)null); } sceneList.Add(sceneByHandle); } } return(sceneList); }
internal static void PasteGameObjects(Transform fallbackParent) { // Paste as a sibling of a active transform if (Selection.activeTransform != null) { PasteAsSiblings(Selection.activeTransform); } // If nothing selected, paste as child of the fallback parent if present else if (fallbackParent != null) { PasteAsChildren(fallbackParent); } // Otherwise, move to the scene of the active object else { Scene targetScene = EditorSceneManager.GetSceneByHandle(Selection.activeInstanceID); PasteToScene(targetScene); } }
private bool IsValidHierarchyInstanceID(int instanceID) { //Get is persistent without loading object var obj = InternalEditorUtility.GetObjectFromInstanceID(instanceID); if (obj != null ? EditorUtility.IsPersistent(obj) : AssetDatabase.Contains(instanceID)) { return(false); } if (SceneHierarchy.IsSceneHeaderInHierarchyWindow(EditorSceneManager.GetSceneByHandle(instanceID))) { return(true); } if (InternalEditorUtility.GetTypeWithoutLoadingObject(instanceID) == typeof(GameObject)) { return(true); } return(false); }
private void SetSceneActive(object userData) { int handle = (int)userData; SceneManager.SetActiveScene(EditorSceneManager.GetSceneByHandle(handle)); }
private Scene[] GetModifiedScenes(List <int> handles) { return(handles.Select <int, Scene>((Func <int, Scene>)(handle => EditorSceneManager.GetSceneByHandle(handle))).Where <Scene>((Func <Scene, bool>)(scene => scene.isDirty)).ToArray <Scene>()); }
private void SelectSceneAsset(object userData) { int instanceIdFromGuid = AssetDatabase.GetInstanceIDFromGUID(AssetDatabase.AssetPathToGUID(EditorSceneManager.GetSceneByHandle((int)userData).path)); Selection.activeInstanceID = instanceIdFromGuid; EditorGUIUtility.PingObject(instanceIdFromGuid); }
private void CreateMultiSceneHeaderContextClick(GenericMenu menu, int contextClickedItemID) { Scene sceneByHandle = EditorSceneManager.GetSceneByHandle(contextClickedItemID); if (!SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(sceneByHandle)) { Debug.LogError("Context clicked item is not a scene"); return; } if (sceneByHandle.isLoaded) { menu.AddItem(EditorGUIUtility.TextContent("Set Active Scene"), false, new GenericMenu.MenuFunction2(this.SetSceneActive), contextClickedItemID); menu.AddSeparator(string.Empty); } if (sceneByHandle.isLoaded) { if (!EditorApplication.isPlaying) { menu.AddItem(EditorGUIUtility.TextContent("Save Scene"), false, new GenericMenu.MenuFunction2(this.SaveSelectedScenes), contextClickedItemID); menu.AddItem(EditorGUIUtility.TextContent("Save Scene As"), false, new GenericMenu.MenuFunction2(this.SaveSceneAs), contextClickedItemID); menu.AddItem(EditorGUIUtility.TextContent("Save All"), false, new GenericMenu.MenuFunction2(this.SaveAllScenes), contextClickedItemID); } else { menu.AddDisabledItem(EditorGUIUtility.TextContent("Save Scene")); menu.AddDisabledItem(EditorGUIUtility.TextContent("Save Scene As")); menu.AddDisabledItem(EditorGUIUtility.TextContent("Save All")); } menu.AddSeparator(string.Empty); } bool flag = EditorSceneManager.loadedSceneCount != this.GetNumLoadedScenesInSelection(); if (sceneByHandle.isLoaded) { bool flag2 = flag && !EditorApplication.isPlaying && !string.IsNullOrEmpty(sceneByHandle.path); if (flag2) { menu.AddItem(EditorGUIUtility.TextContent("Unload Scene"), false, new GenericMenu.MenuFunction2(this.UnloadSelectedScenes), contextClickedItemID); } else { menu.AddDisabledItem(EditorGUIUtility.TextContent("Unload Scene")); } } else { bool flag3 = !EditorApplication.isPlaying; if (flag3) { menu.AddItem(EditorGUIUtility.TextContent("Load Scene"), false, new GenericMenu.MenuFunction2(this.LoadSelectedScenes), contextClickedItemID); } else { menu.AddDisabledItem(EditorGUIUtility.TextContent("Load Scene")); } } bool flag4 = this.GetSelectedScenes().Count == SceneManager.sceneCount; bool flag5 = flag && !flag4 && !EditorApplication.isPlaying; if (flag5) { menu.AddItem(EditorGUIUtility.TextContent("Remove Scene"), false, new GenericMenu.MenuFunction2(this.RemoveSelectedScenes), contextClickedItemID); } else { menu.AddDisabledItem(EditorGUIUtility.TextContent("Remove Scene")); } menu.AddSeparator(string.Empty); if (!string.IsNullOrEmpty(sceneByHandle.path)) { menu.AddItem(EditorGUIUtility.TextContent("Select Scene Asset"), false, new GenericMenu.MenuFunction2(this.SelectSceneAsset), contextClickedItemID); } else { menu.AddDisabledItem(new GUIContent("Select Scene Asset")); } if (sceneByHandle.isLoaded) { menu.AddSeparator(string.Empty); this.AddCreateGameObjectItemsToMenu(menu, (from t in Selection.transforms select t.gameObject).ToArray <GameObject>(), false, true, sceneByHandle.handle); } }