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();
                }
            }
        }
Exemple #2
0
 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());
            }
            );
        }