void PrepareForLoadScene( LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { if (loadMode == LoadSceneMode.Single) { Assert.IsEqual(containerMode, LoadSceneRelationship.None); } if (containerMode == LoadSceneRelationship.None) { SceneContext.ParentContainer = null; } else if (containerMode == LoadSceneRelationship.Child) { SceneContext.ParentContainer = _sceneContainer; } else { Assert.IsEqual(containerMode, LoadSceneRelationship.Sibling); SceneContext.ParentContainer = _sceneContainer.ParentContainer; } SceneContext.ExtraBindingsInstallMethod = extraBindings; }
private void PrepareForLoadScene( LoadSceneMode loadMode, Action <DiContainer> extraBindings, Action <DiContainer> extraBindingsLate, LoadSceneRelationship containerMode) { if (loadMode == LoadSceneMode.Single) { Assert.IsEqual(containerMode, LoadSceneRelationship.None); // Here we explicitly unload all existing scenes rather than relying on Unity to // do this for us. The reason we do this is to ensure a deterministic destruction // order for everything in the scene and in the container. // See comment at ProjectKernel.OnApplicationQuit for more details _projectKernel.ForceUnloadAllScenes(); } if (containerMode == LoadSceneRelationship.None) { SceneContext.ParentContainers = null; } else if (containerMode == LoadSceneRelationship.Child) { SceneContext.ParentContainers = new DiContainer[] { _sceneContainer }; } else { Assert.IsEqual(containerMode, LoadSceneRelationship.Sibling); SceneContext.ParentContainers = _sceneContainer.ParentContainers; } SceneContext.ExtraBindingsInstallMethod = extraBindings; SceneContext.ExtraBindingsLateInstallMethod = extraBindingsLate; }
public void LoadScene( string sceneName, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { LoadScene(sceneName, loadMode, extraBindings, containerMode, null); }
public void LoadScene( int sceneIndex, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { LoadScene(sceneIndex, loadMode, extraBindings, containerMode, null); }
public AsyncOperation LoadSceneAsync( string sceneName, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { return(LoadSceneAsync( sceneName, loadMode, extraBindings, containerMode, null)); }
public AsyncOperationHandle <SceneInstance> LoadSceneAsync( AssetReferenceSceneAsset sceneReference, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { return(LoadSceneAsync( sceneReference, loadMode, extraBindings, containerMode, null)); }
public AsyncOperationHandle <SceneInstance> LoadSceneAsync( AssetReferenceSceneAsset sceneReference, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode, Action <DiContainer> extraBindingsLate) { PrepareForLoadScene(loadMode, extraBindings, extraBindingsLate, containerMode); return(Addressables.LoadSceneAsync(sceneReference, loadMode)); }
public AsyncOperation LoadSceneAsync( string sceneName, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { PrepareForLoadScene(loadMode, extraBindings, containerMode); Assert.That(Application.CanStreamedLevelBeLoaded(sceneName), "Unable to load scene '{0}'", sceneName); return(SceneManager.LoadSceneAsync(sceneName, loadMode)); }
public AsyncOperation LoadSceneAsync( int sceneIndex, LoadSceneMode loadMode = LoadSceneMode.Single, Action <DiContainer> extraBindings = null, LoadSceneRelationship containerMode = LoadSceneRelationship.None, Action <DiContainer> extraBindingsLate = null) { PrepareForLoadScene(loadMode, extraBindings, extraBindingsLate, containerMode); Assert.That(Application.CanStreamedLevelBeLoaded(sceneIndex), "Unable to load scene '{0}'", sceneIndex); return(SceneManager.LoadSceneAsync(sceneIndex, loadMode)); }
public void LoadScene( string sceneName, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { PrepareForLoadScene(loadMode, extraBindings, containerMode); Assert.That(Application.CanStreamedLevelBeLoaded(sceneName), "Unable to load scene '{0}'", sceneName); SceneManager.LoadScene(sceneName, loadMode); // It would be nice here to actually verify that the new scene has a SceneContext // if we have extra binding hooks, or LoadSceneRelationship != None, but // we can't do that in this case since the scene isn't loaded until the next frame }
public PendingLoadOperation( AssetBundleInitializer assetBundleInitializer, ZenjectAssetBundleSceneLoader sceneLoader, string sceneName, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { this.assetBundleInitializer = assetBundleInitializer; this.sceneLoader = sceneLoader; this.sceneName = sceneName; this.loadMode = loadMode; this.extraBindings = extraBindings; this.containerMode = containerMode; assetBundleInitializer.Initialized += AssetBundleInitializerInitialized; }
public AssetBundleLoadOperation LoadSceneAsync( string sceneName, LoadSceneMode loadMode, Action <DiContainer> extraBindings, LoadSceneRelationship containerMode) { if (!_assetBundleInitializer.IsInitialized) { return(new PendingLoadOperation( _assetBundleInitializer, this, sceneName, loadMode, extraBindings, containerMode)); } PrepareForLoadScene(loadMode, extraBindings, containerMode); return(AssetBundleManager.LoadLevelAsync( _assetBundleName, sceneName, loadMode == LoadSceneMode.Additive)); }