Esempio n. 1
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set.");
                yield break;
            }

            DontDestroyOnLoad(gameObject);

            Fader            fader            = FindObjectOfType <Fader>();
            SavingWrapper    savingWrapper    = FindObjectOfType <SavingWrapper>();
            PlayerController playerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>();

            playerController.enabled = false;

            yield return(fader.FadeOut(fadeOutTime));

            savingWrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            PlayerController newPlayerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>();

            newPlayerController.enabled = false;


            savingWrapper.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            savingWrapper.Save();

            yield return(new WaitForSeconds(fadeWaitTime));

            fader.FadeIn(fadeInTime);

            newPlayerController.enabled = true;
            Destroy(gameObject);
        }
Esempio n. 2
0
        private IEnumerator Transition()
        {
            Fader fader = FindObjectOfType <Fader>();

            DontDestroyOnLoad(gameObject);

            yield return(fader.FadeOut(fadeOutTime));

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject);
        }
Esempio n. 3
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set");
                yield break;
            }

            DontDestroyOnLoad(gameObject);

            Fader         fader         = FindObjectOfType <Fader>();
            SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>();

            yield return(fader.FadeOut(fadeOutTime));

            savingWrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            savingWrapper.Load();

            Portal otherPortal = GetOtherPortal();

            if (otherPortal != null)
            {
                UpdatePlayer(otherPortal);
            }
            else
            {
                print("Could not find another portal");
                otherPortal = this;
            }

            savingWrapper.Save();

            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject);
        }
Esempio n. 4
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set.");
                yield break;
            }

            DontDestroyOnLoad(gameObject);

            Fader fader = FindObjectOfType <Fader>();

            // Fade out
            yield return(StartCoroutine(fader.FadeOut(fadeOutTime)));

            // Save current
            SavingWrapper wrapper = FindObjectOfType <SavingWrapper>();

            wrapper.Save();

            // Load new Scene
            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            // Load current level
            wrapper.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            wrapper.Save();

            // Wait for a few seconds
            // load?
            yield return(new WaitForSeconds(fadeWaitTime));

            // Fade In
            yield return(StartCoroutine(fader.FadeIn(fadeInTime)));

            Destroy(gameObject);
        }
Esempio n. 5
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set.");
                yield break;
            }

            DontDestroyOnLoad(gameObject);

            Fader fader = FindObjectOfType <Fader>();

            yield return(fader.FadeOut(fadeOutTime));

            // save current level
            SavingWrapper wrapper = FindObjectOfType <SavingWrapper>();

            wrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            // a solution designed by Will Norton to solve
            // an error regarding a MissingReferenceException for SavingWrapper
            wrapper = FindObjectOfType <SavingWrapper>();

            // load current level
            wrapper.Load();

            // move the player
            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            wrapper.Save();

            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject);
        }
Esempio n. 6
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set");
                yield break; // rather than return null for IEnum
            }


            DontDestroyOnLoad(gameObject); // keeps portal gameObject, assuming portal is at root of scene

            Fader fader = FindObjectOfType <Fader>();

            // Save current level
            SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>();

            yield return(fader.FadeOut(fadeOutTime)); //yields take turns within the method each frame

            //yield and call again when scene is finished loading

            savingWrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad)); //allows us to transfer info into new scene

            // Load current level
            savingWrapper.Load();

            //after scene load..
            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            savingWrapper.Save(); // save again after loading the players location so that we have correct state when returning to game, player should be at the protal spawn point

            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject); // this script is attached to portal, so will destroy portal
        }
Esempio n. 7
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set!");
                yield break;
            }

            DontDestroyOnLoad(this.gameObject);

            //Fade out
            Fader fader = FindObjectOfType <Fader>();

            yield return(fader.FadeOut(FadeOutTime));

            //Save current level
            SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>();

            savingWrapper.Save();

            //Load new scene
            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            //Load current level
            savingWrapper.Load();

            //Set player position
            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            savingWrapper.Save();

            //Fade In
            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(FadeInTime));

            Destroy(this.gameObject);
        }
Esempio n. 8
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load is not set!");
                yield break;
            }

            DontDestroyOnLoad(gameObject);

            //star fade out
            Fader fader = FindObjectOfType <Fader>();

            yield return(fader.FadeOut(fadeOutTime));

            //save current level (when exiting level through portal)
            SavingWrapper save_wrap = FindObjectOfType <SavingWrapper>();

            save_wrap.Save();

            //load async next scene
            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            //load current level save
            save_wrap.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            //resave the checkpoint after new scene was loaded
            save_wrap.Save();

            //wait betwen fade out and fade in
            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject);
        }
Esempio n. 9
0
        private IEnumerator Transition()
        {
            if (sceneToLoad == null)
            {
                Debug.LogError("Scene does not exist!");
                yield break;
            }
            DontDestroyOnLoad(gameObject);

            Fader fader = FindObjectOfType <Fader>();

            GetPlayerControllerComponent();
            playerController.enabled = false;
            yield return(fader.FadeOut(fadeOutTime));

            SavingWrapper saveWrap = FindObjectOfType <SavingWrapper>();

            saveWrap.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad.name));

            GetPlayerControllerComponent();
            playerController.enabled = false;

            saveWrap.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            saveWrap.Save();

            yield return(new WaitForSeconds(fadeWaitTime));

            fader.FadeIn(fadeInTime);

            playerController.enabled = true;
            Destroy(gameObject);
        }
Esempio n. 10
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("SceneToLoad not initialized");
                yield break;
            }

            Fader         fader         = FindObjectOfType <Fader>();
            SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>();

            DontDestroyOnLoad(this.gameObject);

            DisableControl(GameObject.FindWithTag("Player"));

            yield return(fader.FadeOut(fadeOutTime));

            savingWrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            DisableControl(GameObject.FindWithTag("Player"));

            savingWrapper.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            savingWrapper.Save();


            yield return(new WaitForSeconds(waitTime));

            EnableControl(GameObject.FindWithTag("Player"));
            yield return(fader.FadeIn(fadeInTime));

            Destroy(this.gameObject);
        }
Esempio n. 11
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load is not set");
                yield break;
            }

            DontDestroyOnLoad(gameObject);
            // launch Fade out effect
            Fader fader = FindObjectOfType <Fader>();

            yield return(fader.FadeOut(fadeOutTime));

            // save current level
            SavingWrapper wrapper = FindObjectOfType <SavingWrapper>();

            wrapper.Save();


            // load the scene
            yield return(SceneManager.LoadSceneAsync(sceneToLoad));


            // Load current level
            wrapper.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            wrapper.Save();
            // launch Fade in effect
            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeOutTime));

            Destroy(gameObject);
        }
Esempio n. 12
0
        IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set!");
                yield break;
            }

            DontDestroyOnLoad(gameObject);
            Fader            fader  = FindObjectOfType <Fader>();
            PlayerController player = FindObjectOfType <PlayerController>();

            player.enabled = false;

            yield return(fader.FadeOut(fadeOutTime));

            MySavingWrapper wrapper = FindObjectOfType <MySavingWrapper>();

            wrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            PlayerController newPlayer = FindObjectOfType <PlayerController>();

            newPlayer.enabled = false;

            wrapper.Load();

            SetupLevel();

            yield return(new WaitForSeconds(fadeWaitTime));

            wrapper.ResetPlayerCamera();
            wrapper.Save();
            fader.FadeIn(fadeInTime);
            newPlayer.enabled = true;

            Destroy(gameObject);
        }
Esempio n. 13
0
        private IEnumerator Transition()
        {
            DontDestroyOnLoad(gameObject);

            Fader fader = FindObjectOfType <Fader>();

            Savingwrapper wrapper          = FindObjectOfType <Savingwrapper>();
            PlayerMove    playerController = GameObject.FindWithTag("Player").GetComponent <PlayerMove>();

            playerController.enabled = false;


            yield return(fader.FadeOut(fadeoutTime));

            wrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            PlayerMove newPlayerController = GameObject.FindWithTag("Player").GetComponent <PlayerMove>();

            newPlayerController.enabled = false;

            wrapper.Load();

            Portal otherportal = GetOtherPortal();

            UpdatePlayer(otherportal);

            wrapper.Save();

            yield return(new WaitForSeconds(fadewaitTime));

            fader.FadeIn(fadeinTime);

            newPlayerController.enabled = true;

            Destroy(gameObject);
        }
Esempio n. 14
0
        private IEnumerator Transition()
        {
            DontDestroyOnLoad(gameObject);
            boxCollider.isTrigger = false;

            savingManager.LoadingScreen.gameObject.SetActive(true);
            StartCoroutine(savingManager.GenerateTips());

            SwitchPlayerControll(false);
            yield return(fader.FadeOut(fadeOutTime));

            savingManager.Save();

            yield return(SceneManager.UnloadSceneAsync(currentSceneIndex));

            yield return(SceneManager.LoadSceneAsync(sceneToLoadIndex, LoadSceneMode.Additive));

            SceneManager.SetActiveScene(SceneManager.GetSceneByBuildIndex(sceneToLoadIndex));
            SwitchPlayerControll(false);

            yield return(savingManager.Load());

            Portal otherPortal = GetOtherPortal();

            UpdatePlayerTransform(otherPortal);

            savingManager.Save();

            yield return(new WaitForSeconds(waitTimeBetweenScenes));

            yield return(fader.FadeIn(fadeInTime));

            savingManager.LoadingScreen.gameObject.SetActive(false);

            SwitchPlayerControll(true);
            Destroy(gameObject);
        }
Esempio n. 15
0
        private IEnumerator Transition()
        {
            DontDestroyOnLoad(gameObject);

            Fader fader = FindObjectOfType <Fader>();

            //SceneManager.LoadScene(sceneToLoad);

            SavingWrapper wrapper = FindObjectOfType <SavingWrapper>();

            yield return(fader.FadeOut(fadeOutTime));

            //save current level
            //SavingWrapper wrapper = FindObjectOfType<SavingWrapper>();

            wrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));


            //load current level
            wrapper.Load();

            //yield return SceneManager.LoadSceneAsync(sceneToLoad);

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            wrapper.Save();

            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject);
        }
Esempio n. 16
0
        private IEnumerator Transition()
        {
            if (portalSceneIndex < 0)
            {
                Debug.LogError("Scene to load is not set");
                yield break;
            }



            DontDestroyOnLoad(gameObject);

            Fader fader = FindObjectOfType <Fader>();

            yield return(fader.FadeOut(fadeOutTime));

            SavingWrapper wrapper = FindObjectOfType <SavingWrapper>();

            wrapper.Save();
            yield return(SceneManager.LoadSceneAsync(portalSceneIndex));

            wrapper.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            wrapper.Save();

            Debug.Log("waiting");
            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject);
        }
        public IEnumerator Transition(ScenePortalIdentifier destination)
        {
            if (sceneToLoad == -1)
            {
                sceneToLoad = GetNextScene();
            }
            DontDestroyOnLoad(gameObject);
            Fader         fader         = FindObjectOfType <Fader>();
            SavingWrapper savingWrapper = FindObjectOfType <SavingWrapper>();

            yield return(fader.FadeOut(fadeOutTime));

            savingWrapper.Save();
            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            savingWrapper.Load();
            UpdatePlayer(GetOtherPortal(destination));
            savingWrapper.Save();
            yield return(new WaitForSeconds(fadeWaitTime));

            yield return(fader.FadeIn(fadeInTime));

            Destroy(gameObject);
        }
Esempio n. 18
0
        private IEnumerator LoadScene(string sceneName)
        {
            fader.gameObject.SetActive(true);
            yield return(fader.FadeOut(2.5f));

            SceneManager.SetActiveScene(mainScene);

            if (currentScene != mainScene)
            {
                yield return(SceneManager.UnloadSceneAsync(currentScene));
            }
            if (!SceneManager.GetSceneByName(sceneName).isLoaded)
            {
                yield return(SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive));
            }
            onLevelLoaded?.Invoke();

            currentScene = SceneManager.GetSceneByName(sceneName);
            SceneManager.SetActiveScene(currentScene);

            yield return(fader.FadeIn(1.5f));

            fader.gameObject.SetActive(false);
        }
Esempio n. 19
0
        IEnumerator FadeIn(float time)
        {
            Fader fader = FindObjectOfType <Fader>();

            yield return(fader.FadeIn(fadeInTime));
        }
Esempio n. 20
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                Debug.LogError("Scene to load not set.");
                yield break;
            }

            // 현재 오브젝트를 다른씬 로드할때 남겨놓음. destroy할 경우 밑에 코드들이 전부 날라감.
            DontDestroyOnLoad(gameObject);
            Fader         fader            = FindObjectOfType <Fader>();
            SavingWrapper savingWrapper    = FindObjectOfType <SavingWrapper>();
            var           playerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>();

            playerController.enabled = false;
            // Remove control

            if (fader != null)
            {
                yield return(fader.FadeOut(m_FadeOutTime));
            }

            savingWrapper.Save();

            yield return(SceneManager.LoadSceneAsync(sceneToLoad));

            // Remove control form loaded player
            // 씬을 넘어왔으니 플레이어를 다시 찾아야한다.
            var newPlayerController = GameObject.FindWithTag("Player").GetComponent <PlayerController>();

            newPlayerController.enabled = false;

            savingWrapper.Load();

            Portal otherPortal = GetOtherPortal();

            UpdatePlayer(otherPortal);

            savingWrapper.Save();

            // 2번연속 충돌감지 방지하기위해 꺼놓은 충돌감지를 새로운 scene이로드 됬을때 다시 켜준다.
            GetComponent <Collider>().enabled = true;

            yield return(new WaitForSeconds(m_FadeWaitTime));

            // if (fader != null)
            // yield return fader.FadeIn(m_fadeInTime);
            // Fader에서 Coroutine이 아닌 IEnumerator를 return 할때 사용했음
            // yield return이 끝나기전까지 newPlayerController.enabled = true;를 하지못하기때문에
            // Fade하는동안 Player는 움직이지 못함.
            // Fade가 끝나지 않아도 플레이어를 움직이게 하기위해
            // FadeIn은 Coroutine 자체를 return 하게해서 다른 곳에서 Coroutine을 실행 할 수 있게한다.
            // FadeIn, Fadeout을 void로 하지않은 이유는 Coroutine을 return 하면 yield return도 사용가능하기 때문.
            if (fader != null)
            {
                fader.FadeIn(m_FadeInTime);
            }

            // Restore control
            // 해당 포털이 Destroy하기전에 빠르게 포탈을 계속 이동할경우
            // Player위치렉이 걸린다.
            // 로딩이 다 끝나고 안정될때까지 Player를 못움직이게해야함.
            newPlayerController.enabled = true;
            Destroy(gameObject);
        }