public void Unload(string sceneName, Action onComplete) { if (AdditiveScenesLoader.TryGetLoadedScene(sceneName, out var scene)) { AdditiveScenesLoader.Unload(scene, onComplete); } else { // TODO error and optional param with scene action stack onComplete?.Invoke(); } }
public void Unload(string sceneName, Action onComplete) { if (AdditiveScenesLoader.TryGetLoadedScene(sceneName, out var scene)) { var sceneDelegate = FindMonoTypeOnSceneRoot <ISceneDelegate>(scene); sceneDelegate?.OnSceneUnload(); AdditiveScenesLoader.Unload(scene, onComplete); } else { // TODO error and optional param with scene action stack onComplete?.Invoke(); } }
public void Deactivate <T>(string sceneName, Action <T> onComplete) where T : ISceneManager { if (AdditiveScenesLoader.TryGetLoadedScene(sceneName, out var scene)) { var sceneManager = FindMonoTypeOnSceneRoot <T>(scene); var sceneDelegate = FindMonoTypeOnSceneRoot <ISceneDelegate>(scene); sceneDelegate?.DeactivateScene(() => { onComplete?.Invoke(sceneManager); }); } else { throw new InvalidOperationException($"{nameof(SceneLoadService)} can not deactivate {sceneName} scene, because it wasn't loaded. "); } }
public void Load <T>(string sceneName, Action <T> onComplete) where T : ISceneManager { AdditiveScenesLoader.LoadAdditively(sceneName, scene => { var sceneManager = FindMonoTypeOnSceneRoot <T>(scene); var sceneDelegate = FindMonoTypeOnSceneRoot <ISceneDelegate>(scene); if (sceneDelegate != null) { sceneDelegate.ActivateScene(() => { onComplete?.Invoke(sceneManager); }); } else { onComplete?.Invoke(sceneManager); } }); }
public void Load <T>(string sceneName, Action <Scene, T> onComplete) where T : ISceneManager { AdditiveScenesLoader.LoadAdditively(sceneName, loadOperationArgs => { if (loadOperationArgs.Status == OperationStatus.Success) { var sceneManager = FindMonoTypeOnSceneRoot <T>(loadOperationArgs.Scene); var sceneDelegate = FindMonoTypeOnSceneRoot <ISceneDelegate>(loadOperationArgs.Scene); if (sceneDelegate != null) { sceneDelegate.ActivateScene(() => { onComplete?.Invoke(loadOperationArgs.Scene, sceneManager); }); } else { onComplete?.Invoke(loadOperationArgs.Scene, sceneManager); } } else { onComplete?.Invoke(default, default);