public static void AddToLoading(List <SceneReference> sceneDependsOn, SceneStarter starter) { if (_kernel == null) { throw new Exception("There is no Kernel. You have to create Kernel before loading scenes"); } for (var i = 0; i < sceneDependsOn.Count; i++) { if (!_scenesDependsOnAvailable.Contains(sceneDependsOn[i].ScenePath)) { _sceneDependsOn.Enqueue(sceneDependsOn[i].ScenePath); _scenesDependsOnAvailable.Add(sceneDependsOn[i].ScenePath); } } if (starter.HasSetup && starter.SceneSetup != null) { _sceneRegisteredSetups.Enqueue(starter.SceneSetup); } if (_coroutine == null) { _coroutine = _mainStarter.StartCoroutine(LoadScenes()); } }
public static void PrepareKernel(SceneStarter mainStarter) { if (_kernel != null) { throw new Exception("Kernel has already created. You can have only one Kernel per Domain"); } _kernel = new SceneKernel(); _kernel.CreateBuilder(); _mainStarter = mainStarter; }
public static void Initialize() { _sceneDependsOn = new Queue <string>(); _scenesDependsOnAvailable = new HashSet <string>(); _sceneRegisteredSetups = new Queue <SceneSetup>(); _scenePostBuildSetups = new Queue <SceneSetup>(); _mainStarter = null; _kernel = null; _coroutine = null; }