public void Execute(UnloadAllScenesExceptSignal loadParams) { SceneManager.SetActiveScene(SceneManager.GetSceneByName(loadParams.Scene)); IPromise lastPromise = null; int count = SceneManager.sceneCount; for (int i = 0; i < count; i++) { Scene scene = SceneManager.GetSceneAt(i); if (scene.isLoaded && !scene.name.Equals(loadParams.Scene)) { if (lastPromise != null) { lastPromise = lastPromise.Then(() => _sceneLoader.UnloadScene(scene.name)); } else { lastPromise = _sceneLoader.UnloadScene(scene.name); } } } //Add promise to resolve OnComplete if (lastPromise != null) { lastPromise.Done( () => { Debug.Log(string.Format("{0} , scene loading/unloading completed!", this)); if (loadParams.OnComplete != null) { loadParams.OnComplete.Resolve(); } }, exception => { Debug.LogError("UnloadAllScenesExceptCommand.Execute: " + exception.ToString()); if (loadParams.OnComplete != null) { loadParams.OnComplete.Reject(exception); } } ); } else { Debug.Log(string.Format("{0} , no scenes loaded/unloaded!", this)); if (loadParams.OnComplete != null) { loadParams.OnComplete.Resolve(); } } }
private void OnReload() { UnloadAllScenesExceptSignal.UnloadAllExcept(ProjectScenes.Startup, SignalBus).Done ( () => { _startupModel.LoadingProgress.Value = StartupModel.ELoadingProgress.LoadPopup; }, exception => { Debug.LogError("Error While Reloading: " + exception.ToString()); } ); }
private void OnReload() { _view.Show(); UnloadAllScenesExceptSignal.UnloadAllExcept(SignalBus, Scenes.Bootstrap).Done ( () => { _bootstrapModel.LoadingProgress.Value = BootstrapModel.ELoadingProgress.LoadPopup; }, exception => { Debug.LogError("Error While Reloading: " + exception.ToString()); } ); }