void RemovePatch(int x, int z, PatchConfiguration ps) { if (!EditorUtility.DisplayDialog("Remove Patch?", string.Format("The patch ({0}) will be deleted!", ps.FormatPatchName(x, z)), "Remove", "Cancel")) { return; } var s = SceneManager.GetSceneByPath(ps.FormatLocalAssetPathPatchName(x, z)); if (s.IsValid()) { EditorSceneManager.CloseScene(s, true); } //remove from build settings var path = ps.FormatLocalAssetPathPatchName(x, z); var settingsScenes = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes); for (var i = 0; i < settingsScenes.Count; i++) { if (!settingsScenes[i].path.Equals(path)) { continue; } settingsScenes.RemoveAt(i); break; } EditorBuildSettings.scenes = settingsScenes.ToArray(); //end remove from build settings EditorUtility.SetDirty(ps); AssetDatabase.DeleteAsset(path); }
void CreateNewPatch(int x, int z, PatchConfiguration ps) { if (!EditorUtility.DisplayDialog("", "Create Patch?", "Create", "Cancel")) { return; } var activeScene = SceneManager.GetActiveScene(); var s = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive); EditorSceneManager.SaveScene(s, ps.FormatLocalAssetPathPatchName(x, z)); //add to build settings if (!ps.IsSceneAddedToBuildSettings(s.path)) { EditorBuildSettings.scenes = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes) { new EditorBuildSettingsScene(s.path, true) }.ToArray(); } //end add to build settings EditorUtility.SetDirty(ps); if (activeScene.IsValid()) { SceneManager.SetActiveScene(activeScene); } }