private void OnOK(PopupWindowArgs args) { if (m_treeView.SelectedItem == null) { args.Cancel = true; return; } if (string.IsNullOrEmpty(Input.text)) { args.Cancel = true; Input.ActivateInputField(); return; } if (Input.text != null && Input.text.Length > 0 && (!char.IsLetter(Input.text[0]) || Input.text[0] == '-')) { PopupWindow.Show("Scene name is invalid", "Scene name should start with letter", "OK"); args.Cancel = true; return; } if (!ProjectItem.IsValidName(Input.text)) { PopupWindow.Show("Scene name is invalid", "Scene name contains invalid characters", "OK"); args.Cancel = true; return; } ProjectItem selectedItem = (ProjectItem)m_treeView.SelectedItem; if (selectedItem.IsScene) { if (Input.text.ToLower() == selectedItem.Name.ToLower()) { PopupWindow.Show("Scene with same name already exits", "Do you want to override it?", "Yes", yes => { RuntimeUndo.Purge(); ShowProgress = true; m_projectManager.SaveScene(selectedItem, () => { ShowProgress = false; m_parentPopup.Close(false); }); }, "No", no => Input.ActivateInputField()); args.Cancel = true; } else { ProjectItem folder = selectedItem.Parent; SaveSceneToFolder(args, folder); } } else { ProjectItem folder = selectedItem; SaveSceneToFolder(args, folder); } }
private void SaveSceneToFolder(PopupWindowArgs args, ProjectItem folder) { if (folder.Children != null && folder.Children.Any(p => p.Name.ToLower() == Input.text.ToLower() && p.IsScene)) { PopupWindow.Show("Scene with same name already exits", "Do you want to override it?", "Yes", yes => { RuntimeUndo.Purge(); ShowProgress = true; m_projectManager.SaveScene(folder.Children.Where(p => p.Name.ToLower() == Input.text.ToLower() && p.IsScene).First(), () => { ShowProgress = false; m_parentPopup.Close(false); }); }, "No", no => Input.ActivateInputField()); args.Cancel = true; } else { ProjectItem newScene = ProjectItem.CreateScene(Input.text); folder.AddChild(newScene); RuntimeUndo.Purge(); ShowProgress = true; m_projectManager.SaveScene(newScene, () => { ShowProgress = false; m_parentPopup.Close(false); }); } }
public void Load() { if (!ConfirmationLoad.activeSelf) { ConfirmationLoad.SetActive(true); return; } RuntimeUndo.Purge(); ExposeToEditor[] editorObjects = ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode).Select(go => go.GetComponent <ExposeToEditor>()).ToArray(); for (int i = 0; i < editorObjects.Length; ++i) { ExposeToEditor exposeToEditor = editorObjects[i]; if (exposeToEditor != null) { DestroyImmediate(exposeToEditor.gameObject); } } ConfirmationLoad.SetActive(false); if (m_sceneManager != null) { m_sceneManager.ActiveScene.Name = SaveFileName; m_sceneManager.LoadScene(m_sceneManager.ActiveScene, () => { SaveButton.interactable = false; }); } }
public virtual void CreateScene() { RuntimeSelection.objects = null; RuntimeUndo.Purge(); ExposeToEditor[] editorObjects = ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode, false).Select(go => go.GetComponent <ExposeToEditor>()).ToArray(); for (int i = 0; i < editorObjects.Length; ++i) { ExposeToEditor exposeToEditor = editorObjects[i]; if (exposeToEditor != null) { DestroyImmediate(exposeToEditor.gameObject); } } GameObject dirLight = new GameObject(); dirLight.transform.rotation = Quaternion.Euler(50, -30, 0); dirLight.transform.position = new Vector3(0, 10, 0); Light lightComponent = dirLight.AddComponent <Light>(); lightComponent.type = LightType.Directional; dirLight.name = "Directional Light"; dirLight.AddComponent <ExposeToEditor>(); GameObject camera = new GameObject(); camera.name = "Main Camera"; camera.transform.position = new Vector3(0, 0, -10); camera.AddComponent <Camera>(); camera.tag = "MainCamera"; camera.AddComponent <ExposeToEditor>(); m_activeScene = ProjectItem.CreateScene("New Scene"); if (SceneCreated != null) { SceneCreated(this, new ProjectManagerEventArgs(ActiveScene)); } }
private void OnPlaymodeStateChanged() { UpdateUIState(m_game == null); RuntimeEditorApplication.IsOpened = !RuntimeEditorApplication.IsPlaying; if (m_game == null) { m_game = Instantiate(GamePrefab); // UnityEditor.EditorApplication.isPaused = true; } else { DestroyImmediate(m_game); m_game = null; } RuntimeEditorApplication.IsOpened = !IsInPlayMode; if (BoxSelection.Current != null) { BoxSelection.Current.gameObject.SetActive(!IsInPlayMode); } if (IsInPlayMode) { RuntimeSelection.objects = null; RuntimeUndo.Purge(); m_playerCameraPostion = PlayerCamera.transform.position; m_playerCameraRotation = PlayerCamera.transform.rotation; } else { PlayerCamera.transform.position = m_playerCameraPostion; PlayerCamera.transform.rotation = m_playerCameraRotation; } SaveButton.interactable = false; }
public void Save() { if (!ConfirmationSave.activeSelf) { ConfirmationSave.SetActive(true); return; } RuntimeUndo.Purge(); ConfirmationSave.SetActive(false); if (m_sceneManager != null) { m_sceneManager.ActiveScene.Name = SaveFileName; m_sceneManager.SaveScene(m_sceneManager.ActiveScene, () => { SaveButton.interactable = false; m_saveFileExists = true; LoadButton.interactable = true; }); } }
public virtual void CreateScene() { RuntimeSelection.objects = null; RuntimeUndo.Purge(); ExposeToEditor[] editorObjects = ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode, false).Select(go => go.GetComponent <ExposeToEditor>()).ToArray(); for (int i = 0; i < editorObjects.Length; ++i) { ExposeToEditor exposeToEditor = editorObjects[i]; if (exposeToEditor != null) { DestroyImmediate(exposeToEditor.gameObject); } } m_activeScene = ProjectItem.CreateScene("New Scene"); if (SceneCreated != null) { SceneCreated(this, new ProjectManagerEventArgs(ActiveScene)); } }
private void OnSaveClick() { if (RuntimeEditorApplication.IsPlaying) { PopupWindow.Show("Save Scene", "Scene can not be saved in playmode", "OK"); return; } if (m_projectManager.ActiveScene == null) { PopupWindow.Show("Save Scene", "Unable to save. ActiveScene is null", "OK"); return; } if (m_projectManager.ActiveScene.Parent == null) { GameObject saveSceneDialog = Instantiate(SaveSceneDialog); saveSceneDialog.transform.position = Vector3.zero; PopupWindow.Show("Save Scene As", saveSceneDialog.transform, "Save", args => { if (!args.Cancel) { BtnSave.interactable = false; BtnSaveAs.interactable = false; } }, "Cancel"); } else { RuntimeUndo.Purge(); m_projectManager.SaveScene(m_projectManager.ActiveScene, () => { }); } }
private void OnProjectResourcesDoubleClick(object sender, ProjectResourcesEventArgs e) { if (e.ItemObjectPair != null) { ProjectItem projectItem = e.ItemObjectPair.ProjectItem; if (projectItem.IsFolder) { m_projectTree.SelectedFolder = projectItem; } else if (projectItem.IsScene) { if (RuntimeEditorApplication.IsPlaying) { PopupWindow.Show("Unable to load scene", "Unable to load scene in play mode", "OK"); return; } RuntimeUndo.Purge(); ExposeToEditor[] editorObjects = ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode, false).Select(go => go.GetComponent <ExposeToEditor>()).ToArray(); for (int i = 0; i < editorObjects.Length; ++i) { ExposeToEditor exposeToEditor = editorObjects[i]; if (exposeToEditor != null) { DestroyImmediate(exposeToEditor.gameObject); } } ShowProgress = true; m_projectManager.LoadScene(projectItem, () => { ShowProgress = false; }); } } }