Esempio n. 1
0
        private void UpdateStatus(AsyncSceneGroup asyncSceneGroup, int i)
        {
            Assert.IsNotNull(asyncSceneGroup);
            AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i];

            // LoadAndActivationMode.Separate cases
            if (asyncScene.Status == LoadStatus.Loading && asyncScene.AsyncOperation.progress >= 0.9f)
            {
                asyncScene.Status = LoadStatus.Loaded;
            }
            if (asyncScene.Status == LoadStatus.Activating && asyncScene.AsyncOperation.isDone)
            {
                asyncScene.Status = LoadStatus.Activated;
            }

            // LoadAndActivationMode.Joint cases
            if (asyncScene.Status == LoadStatus.LoadingAndActivating && asyncScene.AsyncOperation.isDone)
            {
                asyncScene.Status = LoadStatus.Activated;
            }

            if (asyncScene.Status == LoadStatus.Unloading && asyncScene.AsyncOperation.isDone)
            {
                asyncScene.Status = LoadStatus.Unloaded;
            }
        }
Esempio n. 2
0
        private void ActivateSceneAsync(AsyncSceneGroup asyncSceneGroup, int i)
        {
            Assert.IsNotNull(asyncSceneGroup);
            Assert.AreEqual(LoadAndActivationMode.Separate, loadAndActivationMode);

            AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i];
            Assert.AreEqual(LoadStatus.Loaded, asyncScene.Status);

            asyncScene.AsyncOperation.allowSceneActivation = true;
            asyncScene.Status = LoadStatus.Activating;
        }
Esempio n. 3
0
        private void UnloadSceneAsync(AsyncSceneGroup asyncSceneGroup, int i)
        {
            Assert.IsNotNull(asyncSceneGroup);

            AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i];
            Assert.AreEqual(LoadStatus.Activated, asyncScene.Status);

            AsyncOperation op = SceneManager.UnloadSceneAsync(asyncScene.Scene);

            asyncScene.AsyncOperation = op;
            asyncScene.Status         = LoadStatus.Unloading;
        }
Esempio n. 4
0
        public void UnloadSceneGroupAsync(AsyncSceneGroup asyncSceneGroup)
        {
            Assert.IsNotNull(asyncSceneGroup);
            Assert.AreEqual(LoadStatus.Activated, asyncSceneGroup.Status);

            for (int i = 0; i < asyncSceneGroup.SceneGroup.Scenes.Count; i++)
            {
                UnloadSceneAsync(asyncSceneGroup, i);
            }

            asyncSceneGroup.Status = LoadStatus.Unloading;
        }
Esempio n. 5
0
        public void ActivateSceneGroupAsync(AsyncSceneGroup asyncSceneGroup)
        {
            Assert.IsNotNull(asyncSceneGroup);
            Assert.AreEqual(LoadStatus.Loaded, asyncSceneGroup.Status);
            Assert.AreEqual(LoadAndActivationMode.Separate, loadAndActivationMode);

            for (int i = 0; i < asyncSceneGroup.SceneGroup.Scenes.Count; i++)
            {
                ActivateSceneAsync(asyncSceneGroup, i);
            }

            asyncSceneGroup.Status = LoadStatus.Activating;
        }
Esempio n. 6
0
        public AsyncSceneGroup LoadSceneGroupAsync(SceneGroup sceneGroup)
        {
            Assert.IsNotNull(sceneGroup);
            Assert.AreNotEqual(0, sceneGroup.Scenes.Count);

            AsyncSceneGroup asyncSceneGroup = new AsyncSceneGroup(sceneGroup);

            for (int i = 0; i < asyncSceneGroup.SceneGroup.Scenes.Count; i++)
            {
                LoadSceneAsync(asyncSceneGroup, i);
            }

            asyncSceneGroup.Status = ((loadAndActivationMode == LoadAndActivationMode.Separate) ? LoadStatus.Loading : LoadStatus.LoadingAndActivating);

            return(asyncSceneGroup);
        }
Esempio n. 7
0
        private void LoadSceneAsync(AsyncSceneGroup asyncSceneGroup, int i)
        {
            Assert.IsNotNull(asyncSceneGroup);
            AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i];
            Assert.AreEqual(LoadStatus.NotLoaded, asyncScene.Status);
            AsyncOperation op = SceneManager.LoadSceneAsync(asyncSceneGroup.SceneGroup.Scenes[i].SceneName, UnityEngine.SceneManagement.LoadSceneMode.Additive);

            if (loadAndActivationMode == LoadAndActivationMode.Separate)
            {
                op.allowSceneActivation = false;
            }

            asyncScene.AsyncOperation = op;

            asyncScene.Status = ((loadAndActivationMode == LoadAndActivationMode.Separate) ? LoadStatus.Loading : LoadStatus.LoadingAndActivating);
            asyncScene.Scene  = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);
        }
Esempio n. 8
0
        public void UpdateStatus(AsyncSceneGroup asyncSceneGroup)
        {
            Assert.IsNotNull(asyncSceneGroup);

            for (int i = 0; i < asyncSceneGroup.SceneGroup.Scenes.Count; i++)
            {
                UpdateStatus(asyncSceneGroup, i);
            }

            bool asyncOperationInProgress = false;

            for (int i = 0; i < asyncSceneGroup.SceneGroup.Scenes.Count; i++)
            {
                if (IsAsyncOperationInProgress(asyncSceneGroup, i))
                {
                    asyncOperationInProgress = true;
                }
            }

            if (!asyncOperationInProgress)
            {
                asyncSceneGroup.Status = asyncSceneGroup.AsyncScenes[0].Status;
            }
        }
Esempio n. 9
0
 private bool IsAsyncOperationInProgress(AsyncSceneGroup asyncSceneGroup, int i)
 {
     Assert.IsNotNull(asyncSceneGroup);
     AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i];
     return(IsAsyncOperationInProgress(asyncScene.Status));
 }
Esempio n. 10
0
 public bool IsAsyncSceneGroupOperationInProgress(AsyncSceneGroup asyncSceneGroup)
 {
     Assert.IsNotNull(asyncSceneGroup);
     return(IsAsyncOperationInProgress(asyncSceneGroup.Status));
 }