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);
                });
            }
        }
Пример #3
0
        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;
                });
            }
        }
Пример #4
0
        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));
            }
        }
Пример #5
0
        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;
        }
Пример #6
0
        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));
            }
        }
Пример #8
0
        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, () =>
                {
                });
            }
        }
Пример #9
0
        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;
                    });
                }
            }
        }