Exemple #1
0
 /**
  * <summary>Loads a new scene.</summary>
  * <param name = "nextSceneInfo">Info about the scene to load</param>
  * <param name = "sceneNumber">The number of the scene to load, if sceneName = ""</param>
  * <param name = "saveRoomData">If True, then the states of the current scene's Remember scripts will be recorded in LevelStorage</param>
  * <param name = "forceReload">If True, the scene will be re-loaded if it is already open.</param>
  */
 public void ChangeScene(SceneInfo nextSceneInfo, bool saveRoomData, bool forceReload = false)
 {
     if (!isLoading)
     {
         PrepareSceneForExit (!KickStarter.settingsManager.useAsyncLoading, saveRoomData);
         LoadLevel (nextSceneInfo, KickStarter.settingsManager.useLoadingScreen, KickStarter.settingsManager.useAsyncLoading, forceReload);
     }
 }
        protected IEnumerator LoadLoadingScreen(int nextSceneIndex, int loadingSceneIndex, bool loadAsynchronously, bool doOverlay)
        {
            if (preloadSceneIndex >= 0)
            {
                ACDebug.LogWarning("Cannot use preloaded scene " + preloadSceneIndex + " because the loading scene overrides it - discarding preloaded data.");
            }
            preloadAsync      = null;
            preloadSceneIndex = -1;

            isLoading       = true;
            loadingProgress = 0f;

            SceneInfo loadingSceneInfo = GetSceneInfo(loadingSceneIndex);

            if (loadingSceneInfo != null)
            {
                loadingSceneInfo.Open();
                yield return(null);

                if (KickStarter.player)
                {
                    KickStarter.player.Teleport(KickStarter.player.Transform.position + new Vector3(0f, -10000f, 0f));
                }
            }

            if (loadAsynchronously)
            {
                if (KickStarter.settingsManager.loadingDelay > 0f)
                {
                    float waitForTime = Time.realtimeSinceStartup + KickStarter.settingsManager.loadingDelay;
                    while (Time.realtimeSinceStartup < waitForTime && KickStarter.settingsManager.loadingDelay > 0f)
                    {
                        yield return(null);
                    }
                }

                SceneInfo nextSceneInfo = GetSceneInfo(nextSceneIndex);
                if (nextSceneInfo != null)
                {
                    AsyncOperation aSync = nextSceneInfo.OpenAsync();

                    aSync.allowSceneActivation = false;

                    while (aSync.progress < 0.9f)
                    {
                        loadingProgress = aSync.progress;
                        yield return(null);
                    }

                    loadingProgress = 1f;

                    if (doOverlay)
                    {
                        yield return(new WaitForEndOfFrame());

                        KickStarter.mainCamera.TakeOverlayScreenshot();
                    }

                    if (KickStarter.settingsManager.manualSceneActivation)
                    {
                        if (KickStarter.eventManager)
                        {
                            completeSceneActivation = false;
                            KickStarter.eventManager.Call_OnAwaitSceneActivation(nextSceneIndex);
                        }

                        while (!completeSceneActivation)
                        {
                            yield return(null);
                        }
                        completeSceneActivation = false;
                    }

                    if (KickStarter.settingsManager.loadingDelay > 0f)
                    {
                        float waitForTime = Time.realtimeSinceStartup + KickStarter.settingsManager.loadingDelay;
                        while (Time.realtimeSinceStartup < waitForTime && KickStarter.settingsManager.loadingDelay > 0f)
                        {
                            yield return(null);
                        }
                    }

                    aSync.allowSceneActivation = true;

                    KickStarter.stateHandler.IgnoreNavMeshCollisions();
                }
            }
            else
            {
                SceneInfo nextSceneInfo = GetSceneInfo(nextSceneIndex);
                if (nextSceneInfo != null)
                {
                    nextSceneInfo.Open();
                }
                else
                {
                    isLoading = false;
                }
            }
        }
Exemple #3
0
        protected IEnumerator LoadLevelAsync(SceneInfo nextSceneInfo)
        {
            isLoading       = true;
            loadingProgress = 0f;
            PrepareSceneForExit(true, false);

            AsyncOperation aSync = null;

            if (nextSceneInfo.Matches(preloadSceneInfo))
            {
                aSync = preloadAsync;
                aSync.allowSceneActivation = true;

                while (!aSync.isDone)
                {
                    loadingProgress = aSync.progress;
                    yield return(null);
                }
                loadingProgress = 1f;
            }
            else
            {
                aSync = nextSceneInfo.LoadLevelASync();

                aSync.allowSceneActivation = false;

                while (aSync.progress < 0.9f)
                {
                    loadingProgress = aSync.progress;
                    yield return(null);
                }

                loadingProgress = 1f;
                isLoading       = false;

                if (KickStarter.settingsManager.manualSceneActivation)
                {
                    if (KickStarter.eventManager != null)
                    {
                        completeSceneActivation = false;
                        KickStarter.eventManager.Call_OnAwaitSceneActivation(nextSceneInfo);
                    }

                    while (!completeSceneActivation)
                    {
                        yield return(null);
                    }
                    completeSceneActivation = false;
                }

                yield return(new WaitForEndOfFrame());

                aSync.allowSceneActivation = true;
            }

            KickStarter.stateHandler.IgnoreNavMeshCollisions();
            isLoading        = false;
            preloadAsync     = null;
            preloadSceneInfo = new SceneInfo(string.Empty, -1);

            StartCoroutine(OnCompleteSceneChange());
        }
Exemple #4
0
        private void ChangeScene()
        {
            if (sceneNumber > -1 || chooseSceneBy == ChooseSceneBy.Name)
            {
                SceneInfo sceneInfo = new SceneInfo (chooseSceneBy, sceneName, sceneNumber);

                if (!onlyPreload && relativePosition && relativeMarker != null)
                {
                    KickStarter.sceneChanger.SetRelativePosition (relativeMarker.transform);
                }

                if (onlyPreload)
                {
                    if (AdvGame.GetReferences ().settingsManager.useAsyncLoading)
                    {
                        KickStarter.sceneChanger.PreloadScene (sceneInfo);
                    }
                    else
                    {
                        ACDebug.LogWarning ("To pre-load scenes, 'Load scenes asynchronously?' must be enabled in the Settings Manager.");
                    }
                }
                else
                {
                    KickStarter.sceneChanger.ChangeScene (sceneInfo, true);
                }
            }
        }
Exemple #5
0
        private IEnumerator LoadLevelCo(SceneInfo nextSceneInfo, bool forceReload = false)
        {
            isLoading = true;
            yield return new WaitForEndOfFrame ();

            nextSceneInfo.LoadLevel (forceReload);
            isLoading = false;
        }
Exemple #6
0
        private IEnumerator LoadLoadingScreen(SceneInfo nextSceneInfo, SceneInfo loadingSceneInfo, bool loadAsynchronously = false)
        {
            isLoading       = true;
            loadingProgress = 0f;

            loadingSceneInfo.LoadLevel();
            yield return(null);

            if (KickStarter.player != null)
            {
                KickStarter.player.transform.position += new Vector3(0f, -10000f, 0f);
            }

            PrepareSceneForExit(true, false);
            if (loadAsynchronously)
            {
                if (KickStarter.settingsManager.loadingDelay > 0f)
                {
                    float waitForTime = Time.realtimeSinceStartup + KickStarter.settingsManager.loadingDelay;
                    while (Time.realtimeSinceStartup < waitForTime)
                    {
                        yield return(null);
                    }
                }

                AsyncOperation aSync = null;
                if (nextSceneInfo.Matches(preloadSceneInfo))
                {
                    aSync = preloadAsync;
                }
                else
                {
                    aSync = nextSceneInfo.LoadLevelASync();
                }

                if (KickStarter.settingsManager.loadingDelay > 0f)
                {
                    aSync.allowSceneActivation = false;

                    while (aSync.progress < 0.9f)
                    {
                        loadingProgress = aSync.progress;
                        yield return(null);
                    }

                    isLoading = false;

                    if (KickStarter.settingsManager.loadingDelay > 0f)
                    {
                        float waitForTime = Time.realtimeSinceStartup + KickStarter.settingsManager.loadingDelay;
                        while (Time.realtimeSinceStartup < waitForTime)
                        {
                            yield return(null);
                        }
                    }

                    aSync.allowSceneActivation = true;
                }
                else
                {
                    while (!aSync.isDone)
                    {
                        loadingProgress = aSync.progress;
                        yield return(null);
                    }
                }

                KickStarter.stateHandler.GatherObjects();
            }
            else
            {
                nextSceneInfo.LoadLevel();
            }

            isLoading    = false;
            preloadAsync = null;

            preloadSceneInfo = new SceneInfo("", -1);

            if (KickStarter.eventManager != null)
            {
                KickStarter.eventManager.Call_OnAfterChangeScene();
            }
        }
		override public float Run ()
		{
			SceneInfo sceneInfo = new SceneInfo (chooseSceneBy, AdvGame.ConvertTokens (sceneName), sceneNumber);

			if (!isRunning)
			{
				waitedOneMoreFrame = false;
				isRunning = true;

				if (KickStarter.sceneSettings.OverridesCameraPerspective ())
				{
					ACDebug.LogError ("The current scene overrides the default camera perspective - this feature should not be used in conjunction with multiple-open scenes.");
				}

				if (sceneAddRemove == SceneAddRemove.Add)
				{
					if (KickStarter.sceneChanger.AddSubScene (sceneInfo))
					{
						return defaultPauseTime;
					}
				}
				else if (sceneAddRemove == SceneAddRemove.Remove)
				{
					KickStarter.sceneChanger.RemoveScene (sceneInfo);
				}
			}
			else
			{
				if (!waitedOneMoreFrame)
				{
					waitedOneMoreFrame = true;
					return defaultPauseTime;
				}

				if (sceneAddRemove == SceneAddRemove.Add)
				{
					bool found = false;
					foreach (SubScene subScene in KickStarter.sceneChanger.GetSubScenes ())
					{
						if (subScene.SceneInfo.Matches (sceneInfo))
						{
							found = true;

							if (runCutsceneOnStart && subScene.SceneSettings != null && subScene.SceneSettings.cutsceneOnStart != null)
							{
								subScene.SceneSettings.cutsceneOnStart.Interact ();
							}
						}
					}

					if (!found)
					{
						ACDebug.LogWarning ("Adding a non-AC scene additively!  A GameEngine prefab must be placed in scene '" + sceneInfo.GetLabel () + "'.");
					}
				}

				isRunning = false;
			}

			return 0f;
		}
Exemple #8
0
 public void PreloadScene(SceneInfo nextSceneInfo)
 {
     StartCoroutine(PreloadLevelAsync(nextSceneInfo));
 }
        private IEnumerator LoadLevel(SceneInfo nextSceneInfo)
        {
            isLoading = true;
            yield return new WaitForEndOfFrame ();

            nextSceneInfo.LoadLevel ();
            isLoading = false;
        }
 private void LoadLevel(SceneInfo nextSceneInfo, bool useLoadingScreen, bool useAsyncLoading)
 {
     if (useLoadingScreen)
     {
         StartCoroutine (LoadLoadingScreen (nextSceneInfo, new SceneInfo (KickStarter.settingsManager.loadingSceneIs, KickStarter.settingsManager.loadingSceneName, KickStarter.settingsManager.loadingScene), useAsyncLoading));
     }
     else
     {
         if (useAsyncLoading)
         {
             StartCoroutine (LoadLevelAsync (nextSceneInfo));
         }
         else
         {
             StartCoroutine (LoadLevel (nextSceneInfo));
         }
     }
 }
 private void Awake()
 {
     previousSceneInfo = new SceneInfo ("", -1);
     relativePosition = Vector3.zero;
     isLoading = false;
 }
 public void PreloadScene(SceneInfo nextSceneInfo)
 {
     StartCoroutine (PreloadLevelAsync (nextSceneInfo));
 }
 /**
  * <summary>Checks if the variables in this instance of the class match another instance.</summary>
  * <param name = "_sceneInfo">The other SceneInfo instance to compare</param>
  * <returns>True if the variables in this instance of the class matches the other instance</returns>
  */
 public bool Matches(SceneInfo _sceneInfo)
 {
     if (name == _sceneInfo.name && number == _sceneInfo.number)
     {
         return true;
     }
     return false;
 }
Exemple #14
0
        private void PrepareSceneForExit(bool isInstant, bool saveRoomData)
        {
            if (isInstant)
            {
                KickStarter.mainCamera.FadeOut (0f);

                if (KickStarter.player)
                {
                    KickStarter.player.Halt ();
                }

                KickStarter.stateHandler.gameState = GameState.Normal;
            }

            Sound[] sounds = FindObjectsOfType (typeof (Sound)) as Sound[];
            foreach (Sound sound in sounds)
            {
                sound.TryDestroy ();
            }
            KickStarter.stateHandler.GatherObjects ();

            KickStarter.playerMenus.ClearParents ();
            if (KickStarter.dialog)
            {
                KickStarter.dialog.KillDialog (true, true);
            }

            if (saveRoomData)
            {
                KickStarter.levelStorage.StoreCurrentLevelData ();
                previousSceneInfo = new SceneInfo ();
            }

            playerOnTransition = KickStarter.player;
        }
Exemple #15
0
        protected IEnumerator LoadLevelAsync(int nextSceneIndex, bool doOverlay)
        {
            if (nextSceneIndex >= 0)
            {
                isLoading       = true;
                loadingProgress = 0f;

                AsyncOperation aSync = null;
                if (nextSceneIndex == preloadSceneIndex)
                {
                    aSync = preloadAsync;
                    aSync.allowSceneActivation = true;

                    while (!aSync.isDone)
                    {
                        loadingProgress = aSync.progress;
                        yield return(null);
                    }
                    loadingProgress = 1f;
                }
                else
                {
                    SceneInfo nextSceneInfo = GetSceneInfo(nextSceneIndex);
                    if (nextSceneInfo != null)
                    {
                        aSync = nextSceneInfo.OpenAsync();

                        if (aSync != null)
                        {
                            aSync.allowSceneActivation = false;

                            while (aSync.progress < 0.9f)
                            {
                                loadingProgress = aSync.progress;
                                yield return(null);
                            }

                            loadingProgress = 1f;
                            //isLoading = false;

                            if (doOverlay)
                            {
                                yield return(new WaitForEndOfFrame());

                                KickStarter.mainCamera.TakeOverlayScreenshot();
                            }

                            if (KickStarter.settingsManager.manualSceneActivation)
                            {
                                if (KickStarter.eventManager)
                                {
                                    completeSceneActivation = false;
                                    KickStarter.eventManager.Call_OnAwaitSceneActivation(nextSceneIndex);
                                }

                                while (!completeSceneActivation)
                                {
                                    yield return(null);
                                }
                                completeSceneActivation = false;
                            }

                            yield return(new WaitForEndOfFrame());

                            aSync.allowSceneActivation = true;
                        }
                        else
                        {
                            isLoading = false;
                        }
                    }
                }

                KickStarter.stateHandler.IgnoreNavMeshCollisions();
                //isLoading = false;
                preloadAsync      = null;
                preloadSceneIndex = -1;
            }
        }
        private IEnumerator LoadLevelAsync(SceneInfo nextSceneInfo)
        {
            isLoading = true;
            loadingProgress = 0f;
            PrepareSceneForExit (true, false);

            AsyncOperation aSync = null;
            if (nextSceneInfo.Matches (preloadSceneInfo))
            {
                aSync = preloadAsync;
                aSync.allowSceneActivation = true;
            }
            else
            {
                aSync = nextSceneInfo.LoadLevelASync ();
            }

            while (!aSync.isDone)
            {
                loadingProgress = aSync.progress;
                yield return null;
            }

            KickStarter.stateHandler.GatherObjects ();
            isLoading = false;
            preloadAsync = null;
            preloadSceneInfo = new SceneInfo ("", -1);
        }
Exemple #17
0
        /**
         * <summary>Checks if this class instance represetnts the currently-active main scene</summary>
         * <returns>True if this class instance represetnts the currently-active main scene</returns>
         */
        public bool IsCurrentActive()
        {
            SceneInfo activeSceneInfo = new SceneInfo(UnityVersionHandler.GetCurrentSceneName(), UnityVersionHandler.GetCurrentSceneNumber());

            return(Matches(activeSceneInfo));
        }
        private IEnumerator LoadLoadingScreen(SceneInfo nextSceneInfo, SceneInfo loadingSceneInfo, bool loadAsynchronously = false)
        {
            isLoading = true;
            loadingProgress = 0f;

            if (KickStarter.player != null)
            {
                KickStarter.player.transform.position += new Vector3 (0f, -10000f, 0f);
            }

            loadingSceneInfo.LoadLevel ();
            yield return null;

            PrepareSceneForExit (true, false);
            if (loadAsynchronously)
            {
                yield return new WaitForSeconds (KickStarter.settingsManager.loadingDelay);

                AsyncOperation aSync = null;
                if (nextSceneInfo.Matches (preloadSceneInfo))
                {
                    aSync = preloadAsync;
                }
                else
                {
                    aSync = nextSceneInfo.LoadLevelASync ();
                }

                if (KickStarter.settingsManager.loadingDelay > 0f)
                {
                    aSync.allowSceneActivation = false;

                    while (aSync.progress < 0.9f)
                    {
                        loadingProgress = aSync.progress;
                        yield return null;
                    }

                    isLoading = false;
                    yield return new WaitForSeconds (KickStarter.settingsManager.loadingDelay);
                    aSync.allowSceneActivation = true;
                }
                else
                {
                    while (!aSync.isDone)
                    {
                        loadingProgress = aSync.progress;
                        yield return null;
                    }
                }
                KickStarter.stateHandler.GatherObjects ();
            }
            else
            {
                nextSceneInfo.LoadLevel ();
            }

            isLoading = false;
            preloadAsync = null;
            preloadSceneInfo = new SceneInfo ("", -1);
        }
Exemple #19
0
 public void OnAwake()
 {
     previousSceneInfo = new SceneInfo("", -1);
     relativePosition  = Vector3.zero;
     isLoading         = false;
 }
        private IEnumerator PreloadLevelAsync(SceneInfo nextSceneInfo)
        {
            loadingProgress = 0f;

            preloadSceneInfo = nextSceneInfo;
            preloadAsync = nextSceneInfo.LoadLevelASync ();
            preloadAsync.allowSceneActivation = false;

            // Wait until done and collect progress as we go.
            while (!preloadAsync.isDone)
            {
                loadingProgress = preloadAsync.progress;
                if (loadingProgress >= 0.9f)
                {
                    // Almost done.
                    break;
                }
                yield return null;
            }
        }
        private IEnumerator LoadLoadingScreen(SceneInfo nextSceneInfo, SceneInfo loadingSceneInfo, bool loadAsynchronously = false)
        {
            if (preloadSceneInfo != null && !preloadSceneInfo.IsNull)
            {
                ACDebug.LogWarning("Cannot use preloaded scene '" + preloadSceneInfo.GetLabel() + "' because the loading scene overrides it - discarding preloaded data.");
            }
            preloadAsync     = null;
            preloadSceneInfo = new SceneInfo("", -1);

            isLoading       = true;
            loadingProgress = 0f;

            loadingSceneInfo.LoadLevel();
            yield return(null);

            if (KickStarter.player != null)
            {
                KickStarter.player.transform.position += new Vector3(0f, -10000f, 0f);
            }

            PrepareSceneForExit(true, false);
            if (loadAsynchronously)
            {
                if (KickStarter.settingsManager.loadingDelay > 0f)
                {
                    float waitForTime = Time.realtimeSinceStartup + KickStarter.settingsManager.loadingDelay;
                    while (Time.realtimeSinceStartup < waitForTime && KickStarter.settingsManager.loadingDelay > 0f)
                    {
                        yield return(null);
                    }
                }

                AsyncOperation aSync = nextSceneInfo.LoadLevelASync();

                if (KickStarter.settingsManager.loadingDelay > 0f)
                {
                    aSync.allowSceneActivation = false;

                    while (aSync.progress < 0.9f)
                    {
                        loadingProgress = aSync.progress;
                        yield return(null);
                    }

                    isLoading = false;

                    float waitForTime = Time.realtimeSinceStartup + KickStarter.settingsManager.loadingDelay;
                    while (Time.realtimeSinceStartup < waitForTime && KickStarter.settingsManager.loadingDelay > 0f)
                    {
                        yield return(null);
                    }

                    aSync.allowSceneActivation = true;
                }
                else
                {
                    while (!aSync.isDone)
                    {
                        loadingProgress = aSync.progress;
                        yield return(null);
                    }
                }

                KickStarter.stateHandler.IgnoreNavMeshCollisions();
            }
            else
            {
                nextSceneInfo.LoadLevel();
            }

            isLoading = false;

            StartCoroutine(OnCompleteSceneChange());
        }
        private void PrepareSceneForExit(bool isInstant, bool saveRoomData)
        {
            if (isInstant)
            {
                KickStarter.mainCamera.FadeOut (0f);

                if (KickStarter.player)
                {
                    KickStarter.player.Halt ();

                    if (KickStarter.settingsManager.movementMethod == MovementMethod.UltimateFPS)
                    {
                        UltimateFPSIntegration.SetCameraEnabled (false, true);
                    }
                }

                KickStarter.stateHandler.gameState = GameState.Normal;
            }

            Sound[] sounds = FindObjectsOfType (typeof (Sound)) as Sound[];
            foreach (Sound sound in sounds)
            {
                sound.TryDestroy ();
            }
            KickStarter.stateHandler.GatherObjects ();

            KickStarter.playerMenus.ClearParents ();
            if (KickStarter.dialog)
            {
                KickStarter.dialog.KillDialog (true, true);
            }

            if (saveRoomData)
            {
                KickStarter.levelStorage.StoreCurrentLevelData ();
                previousSceneInfo = new SceneInfo (Application.loadedLevelName, Application.loadedLevel);
            }

            playerOnTransition = KickStarter.player;
        }
Exemple #23
0
 private void AssignThisSceneInfo()
 {
     thisSceneInfo = new SceneInfo(UnityVersionHandler.GetCurrentSceneName(), UnityVersionHandler.GetCurrentSceneNumber());
 }
Exemple #24
0
		/**
		 * <summary>Creates a new instance of the 'Player: Switch' Action, set to make the old Player become an NPC</summary>
		 * <param name = "newPlayerID">The ID number of the Player to switch to</param>
		 * <param name = "transferInventory">If True, the previous Player's inventory will be transferred to the new one</param>
		 * <param name = "newSceneInfo">A data container for information about the new Player's scene. If null, the new Player will replace his associated NPC in the current scene</param>
		 * <returns>The generated Action</returns>
		 */
		public static ActionPlayerSwitch CreateNew (int newPlayerID, bool transferInventory = false, SceneInfo newSceneInfo = null)
		{
			ActionPlayerSwitch newAction = (ActionPlayerSwitch) CreateInstance <ActionPlayerSwitch>();
			newAction.playerID = newPlayerID;
			newAction.restorePreviousData = true;
			newAction.keepInventory = transferInventory;
			newAction.newPlayerPosition = (newSceneInfo != null) ? NewPlayerPosition.AppearInOtherScene : NewPlayerPosition.ReplaceAssociatedNPC;
			newAction.oldPlayer = OldPlayer.ReplaceWithAssociatedNPC;
			if (newSceneInfo != null)
			{
				newAction.newPlayerScene = newSceneInfo.number;
				newAction.newPlayerSceneName = newSceneInfo.name;
			}
			return newAction;
		}