///@param sceneName /// Name of the scene to switch to /// @param [optional] callback /// Function to call when the transiton is done /// public void LoadSceneAdditively(string sceneName, Action callback = null) { GlobalDirector.ExecuteCoroutine(StartLoadScene(sceneName, LoadSceneMode.Additive, () => { callback.SafeInvoke(); })); }
/// Coroutine to handle transitioning to a scene with a transition screen /// /// @param sceneLoadOperation /// AsyncOperation for the scene loading /// @param transitionView /// SceneTransitionView to use as the transition screen /// @param [optional] callback /// Function to call when the transiton is done /// private IEnumerator StartTransition(AsyncOperation sceneLoadOperation, SceneTransitionView transitionView, Action callback = null) { sceneLoadOperation.allowSceneActivation = false; if (transitionView != null) { yield return(GlobalDirector.ExecuteCoroutine(transitionView.Show())); } sceneLoadOperation.allowSceneActivation = true; yield return(new WaitUntil(() => sceneLoadOperation.isDone)); LocalDirector[] localDirectors = GameObject.FindObjectsOfType <LocalDirector>(); foreach (LocalDirector localDirector in localDirectors) { yield return(new WaitUntil(() => localDirector.IsReady())); } callback.SafeInvoke(); OnSceneActive.SafeInvoke(GetActiveScene()); if (transitionView != null) { yield return(GlobalDirector.ExecuteCoroutine(transitionView.Hide())); } }
/// @param sceneName /// Name of the scene to switch to /// @param transitionPrefabName /// Name of the prefab inside the default transition folder to use for the transition screen /// @param [optional] callback /// Function to call when the transiton is done /// public void SwitchToScene(string sceneName, string transitionPrefabName, Action callback = null) { m_scenes.Clear(); AsyncOperation loadSceneOperation = SceneManager.LoadSceneAsync(sceneName); SceneTransitionView transitionView = CreateTransitionView(transitionPrefabName); GlobalDirector.ExecuteCoroutine(StartTransition(loadSceneOperation, transitionView, callback)); }
/// Start the presenting process /// public void RequestPresent() { m_coroutine = GlobalDirector.ExecuteCoroutine(Present(() => { if (m_backButtonEnabled == true) { m_inputService.AddBackButtonListener(OnBackPressed); } })); }
///@param sceneName /// Name of the scene to unload /// @param [optional] callback /// Function to call when the transiton is done /// public void UnloadScene(string sceneName, Action callback = null) { if (IsSceneLoaded(sceneName) == true) { GlobalDirector.ExecuteCoroutine(StartUnloadScene(SceneManager.GetSceneByName(sceneName), callback)); } else { callback.SafeInvoke(); } }
/// @param callback /// The function to call when the data is loaded /// public void LoadCachedData(Action callback = null) { m_coroutine = GlobalDirector.ExecuteCoroutine(LoadDataAsync(callback)); }
/// Start the dismissing process /// public void RequestDismiss() { DisableBackButton(); m_coroutine = GlobalDirector.ExecuteCoroutine(Dismiss()); }
/// @param sceneName /// Name of the scene to switch to /// @param [optional] callback /// Function to call when the transiton is done /// public void SwitchToScene(string sceneName, Action callback = null) { m_scenes.Clear(); GlobalDirector.ExecuteCoroutine(StartLoadScene(sceneName, LoadSceneMode.Single, callback)); }