/// <summary> /// Called by the runtime when the editor is first started. Called after <see cref="OnInitialize"/>. /// </summary> static void OnEditorStartUp() { if (EditorSettings.AutoLoadLastProject) { string projectPath = EditorSettings.LastOpenProject; if (EditorApplication.IsValidProject(projectPath)) { EditorApplication.LoadProject(projectPath); } else { ProjectWindow.Open(); } } else { ProjectWindow.Open(); } CodeEditorType activeCodeEditor = (CodeEditorType)EditorSettings.GetInt(SettingsWindow.ActiveCodeEditorKey, (int)CodeEditorType.None); CodeEditorType[] availableEditors = CodeEditor.AvailableEditors; if (Array.Exists(availableEditors, x => x == activeCodeEditor)) { CodeEditor.ActiveEditor = activeCodeEditor; } else { if (availableEditors.Length > 0) { CodeEditor.ActiveEditor = availableEditors[0]; } } }
/// <summary> /// Attempts to open a project at the path currently entered in the project path input box. /// </summary> private void OpenProject() { string projectPath = projectInputBox.Value; if (EditorApplication.IsValidProject(projectPath)) { EditorSettings.AutoLoadLastProject = autoLoadToggle.Value; Close(); EditorApplication.LoadProject(projectPath); } else { // Remove invalid project from recent projects list RecentProject[] recentProjects = EditorSettings.RecentProjects; for (int i = 0; i < recentProjects.Length; i++) { if (PathEx.Compare(recentProjects[i].path, projectPath)) { RecentProject[] newRecentProjects = new RecentProject[recentProjects.Length - 1]; int idx = 0; for (int j = 0; j < recentProjects.Length; j++) { if (i == j) { continue; } newRecentProjects[idx] = recentProjects[j]; idx++; } EditorSettings.RecentProjects = newRecentProjects; EditorSettings.Save(); RefreshRecentProjects(); break; } } // Warn user LocString message = new LocEdString("Provided project path \"{0}\" doesn't contain a valid project."); message.SetParameter(0, projectPath); DialogBox.Open(new LocEdString("Error"), message, DialogBox.Type.OK); } }