Example #1
0
        //-------------------------------------------------------------------------------------------------------------
        private IEnumerator INTERNAL_PlayEffectWithCallBackSceneAsync(Scene sScene, STSTransitionData sTransitionData = null, STSDelegate sDelegate = null)
        {
            TransitionInProgress = true;
            EventSystemPrevent(false);
            STSTransition tTransitionParams = GetTransitionsParams(sScene);

            STSTransitionInterface[] tActualSceneInterfaced = GetTransitionInterface(sScene);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneDisable(sTransitionData);
            }
            AnimationTransitionOut(tTransitionParams, sTransitionData);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tTransitionParams.EffectOnExit, true);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, true);
            }
            if (sDelegate != null)
            {
                sDelegate(sTransitionData);
            }
            AnimationTransitionIn(tTransitionParams, sTransitionData);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tTransitionParams.EffectOnEnter, tTransitionParams.InterEffectDuration, true);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, true);
            }
            EventSystemPrevent(true);
            CameraPrevent(true);
            AudioListenerPrevent(true);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneEnable(sTransitionData);
            }
            TransitionInProgress = false;
        }
        //-------------------------------------------------------------------------------------------------------------
        private void AnimationTransitionOut(STSTransition sThisSceneParameters, STSTransitionData sDatas)
        {
            EffectType = sThisSceneParameters.EffectOnExit.GetEffect();
            if (EffectType == null)
            {
                EffectType = new STSEffectFade();
            }
            STSEffectMoreInfos sMoreInfos = null;

            if (sDatas != null)
            {
                sMoreInfos = sDatas.EffectMoreInfos;
            }
            EffectType.StartEffectExit(new Rect(0, 0, Screen.width, Screen.height), sMoreInfos);
        }
Example #3
0
        //-------------------------------------------------------------------------------------------------------------
        public override void OnInspectorGUI()
        {
            STSTransition tTarget = (STSTransition)target;

            //if (tTarget.gameObject.GetComponent<STSTransitionInterface>() != null)
            //{
            serializedObject.Update();
            //DrawDefaultInspector();
            //EditorGUILayout.HelpBox("Determine effects scene parameters.", MessageType.Info);
            EditorGUILayout.PropertyField(SPEffectOnEnter);
            EditorGUILayout.PropertyField(SPEffectOnExit);
            EditorGUILayout.PropertyField(SPInterEffectDuration);
            serializedObject.ApplyModifiedProperties();
            //}
            //else
            //{
            //    EditorGUILayout.HelpBox("Need component with interface ISTSTransitionParameters!", MessageType.Error);
            //}
        }
        //-------------------------------------------------------------------------------------------------------------
        private void AnimationTransitionIn(STSTransition sThisSceneParameters, STSTransitionData sDatas)
        {
            Color tOldColor  = Color.black;
            float tInterlude = 0;

            if (EffectType != null)
            {
                // I get the old value of
                tOldColor  = new Color(EffectType.TintPrimary.r, EffectType.TintPrimary.g, EffectType.TintPrimary.b, EffectType.TintPrimary.a);
                tInterlude = sThisSceneParameters.InterEffectDuration;
            }
            EffectType = sThisSceneParameters.EffectOnEnter.GetEffect();
            if (EffectType == null)
            {
                EffectType = new STSEffectFade();
            }
            STSEffectMoreInfos sMoreInfos = null;

            if (sDatas != null)
            {
                sMoreInfos = sDatas.EffectMoreInfos;
            }
            EffectType.StartEffectEnter(new Rect(0, 0, Screen.width, Screen.height), tOldColor, tInterlude, sMoreInfos);
        }
        //-------------------------------------------------------------------------------------------------------------
        private IEnumerator INTERNAL_ActiveSceneWithoutIntermissionAsync(STSTransitionData sTransitionData, string sActualActiveSceneName, string sSceneNameToActive)
        {
            TransitionInProgress = true;
            STSTransition tActualSceneParams = GetTransitionsParams(SceneManager.GetSceneByName(sActualActiveSceneName));

            STSTransitionInterface[] tActualSceneInterfaced = GetTransitionInterface(SceneManager.GetSceneByName(sActualActiveSceneName));
            STSTransitionInterface[] tOtherSceneInterfaced  = GetOtherTransitionInterface(SceneManager.GetSceneByName(sActualActiveSceneName));
            STSTransition            tNextSceneParams       = GetTransitionsParams(SceneManager.GetSceneByName(sSceneNameToActive));

            STSTransitionInterface[] tNextSceneInterfaced = GetTransitionInterface(SceneManager.GetSceneByName(sSceneNameToActive));
            EventSystemPrevent(false);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneDisable(sTransitionData);
            }
            AnimationTransitionOut(tActualSceneParams, sTransitionData);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, false);
            }
            SceneManager.SetActiveScene(SceneManager.GetSceneByName(sSceneNameToActive));
            CameraPrevent(true);
            AudioListenerPrevent(true);
            AnimationTransitionIn(tNextSceneParams, sTransitionData);
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tNextSceneParams.EffectOnEnter, tNextSceneParams.InterEffectDuration, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tNextSceneParams.EffectOnEnter, tNextSceneParams.InterEffectDuration, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, false);
            }
            EventSystemPrevent(true);
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneEnable(sTransitionData);
            }
            TransitionInProgress = false;
        }
        //-------------------------------------------------------------------------------------------------------------
        private IEnumerator INTERNAL_ActiveSceneWithIntermissionAsync(STSTransitionData sTransitionData, string sActualActiveSceneName, string sSceneNameToActive, string sIntermissionSceneName)
        {
            TransitionInProgress = true;
            STSTransition tActualSceneParams = GetTransitionsParams(SceneManager.GetSceneByName(sActualActiveSceneName));

            STSTransitionInterface[] tActualSceneInterfaced = GetTransitionInterface(SceneManager.GetSceneByName(sActualActiveSceneName));
            STSTransitionInterface[] tOtherSceneInterfaced  = GetOtherTransitionInterface(SceneManager.GetSceneByName(sActualActiveSceneName));
            STSTransition            tNextSceneParams       = GetTransitionsParams(SceneManager.GetSceneByName(sSceneNameToActive));

            STSTransitionInterface[] tNextSceneInterfaced = GetTransitionInterface(SceneManager.GetSceneByName(sSceneNameToActive));
            EventSystemPrevent(false);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneDisable(sTransitionData);
            }
            AnimationTransitionOut(tActualSceneParams, sTransitionData);
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, false);
            }
            // load transition scene async
            AsyncOperation tAsynchroneLoadIntermissionOperation;

            tAsynchroneLoadIntermissionOperation = SceneManager.LoadSceneAsync(sIntermissionSceneName, LoadSceneMode.Additive);
            tAsynchroneLoadIntermissionOperation.allowSceneActivation = false;
            while (tAsynchroneLoadIntermissionOperation.progress < 0.9f)
            {
                yield return(null);
            }
            // Intermission scene will be active
            tAsynchroneLoadIntermissionOperation.allowSceneActivation = true;
            while (!tAsynchroneLoadIntermissionOperation.isDone)
            {
                yield return(null);
            }
            // get Transition Scene
            Scene tIntermissionScene = SceneManager.GetSceneByName(sIntermissionSceneName);

            // Active the next scene as root scene
            SceneManager.SetActiveScene(tIntermissionScene);
            // disable audiolistener of preview scene
            CameraPrevent(true);
            AudioListenerPrevent(true);
            // get params
            STSTransition tIntermissionSceneParams = GetTransitionsParams(tIntermissionScene);

            STSTransitionInterface[]   tIntermissionSceneInterfaced = GetTransitionInterface(tIntermissionScene);
            STSIntermissionInterface[] tIntermissionInterfaced      = GetIntermissionInterface(tIntermissionScene);
            // disable the user interactions until fadein
            EventSystemEnable(tIntermissionScene, false);
            // Intermission scene is loaded
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneLoaded(sTransitionData);
            }
            // animation in Go!
            AnimationTransitionIn(tIntermissionSceneParams, sTransitionData);
            // animation in
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnEnter, tIntermissionSceneParams.InterEffectDuration, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnEnter, tIntermissionSceneParams.InterEffectDuration, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            // animation in Finish
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, false);
            }
            // enable the user interactions
            EventSystemEnable(tIntermissionScene, true);
            // enable the user interactions
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneEnable(sTransitionData);
            }
            // start stand by
            STSIntermission tIntermissionSceneStandBy = GetStandByParams(tIntermissionScene);

            foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
            {
                tInterfaced.OnStandByStart(tIntermissionSceneStandBy);
            }
            StandBy();
            while (StandByIsProgressing(tIntermissionSceneStandBy))
            {
                yield return(null);
            }
            // send call back for standby finished
            foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
            {
                tInterfaced.OnStandByFinish(tIntermissionSceneStandBy);
            }
            // Waiting to load the next Scene
            while (WaitingToLauchNextScene(tIntermissionSceneStandBy))
            {
                //Debug.Log ("StandByIsNotFinished loop");
                yield return(null);
            }
            // stanby is finish
            // disable user interactions on the transition scene
            EventSystemEnable(tIntermissionScene, false);


            // disable user interactions on the Intermission scene
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneDisable(sTransitionData);
            }
            // Intermission scene Transition Out GO!
            AnimationTransitionOut(tIntermissionSceneParams, sTransitionData);
            // Intermission scene Transition Out start
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnExit, tIntermissionSceneParams.InterEffectDuration, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnExit, tIntermissionSceneParams.InterEffectDuration, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            // Intermission scene Transition Out finished!
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, false);
            }
            // fadeout is finish
            // will unloaded the Intermission scene
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneWillUnloaded(sTransitionData);
            }
            AsyncOperation tAsynchroneUnloadTransition;

            tAsynchroneUnloadTransition = SceneManager.UnloadSceneAsync(sIntermissionSceneName);
            while (tAsynchroneUnloadTransition.progress < 0.9f)
            {
                yield return(null);
            }
            while (!tAsynchroneUnloadTransition.isDone)
            {
                yield return(null);
            }
            CameraPrevent(true);
            AudioListenerPrevent(true);
            SceneManager.SetActiveScene(SceneManager.GetSceneByName(sSceneNameToActive));
            AnimationTransitionIn(tNextSceneParams, sTransitionData);
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tNextSceneParams.EffectOnEnter, tNextSceneParams.InterEffectDuration, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tNextSceneParams.EffectOnEnter, tNextSceneParams.InterEffectDuration, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, false);
            }
            EventSystemPrevent(true);
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneEnable(sTransitionData);
            }
            TransitionInProgress = false;
        }
Example #7
0
        //-------------------------------------------------------------------------------------------------------------
        private IEnumerator INTERNAL_ChangeScenesWithIntermission(
            string sIntermissionScene,
            string sActualActiveScene,
            string sNextActiveScene,
            List <string> sScenesToAdd,
            List <string> sScenesToRemove,
            STSTransitionData sTransitionData)
        {
            //AsyncOperation tAsyncOperation;
            Dictionary <string, AsyncOperation> tAsyncOperationList = new Dictionary <string, AsyncOperation>();

            //-------------------------------
            // ACTUAL SCENE DISABLE
            //-------------------------------
            TransitionInProgress = true;
            //-------------------------------
            Scene tActualScene = SceneManager.GetSceneByName(sActualActiveScene);
            //-------------------------------
            STSTransition tActualSceneParams = GetTransitionsParams(tActualScene);

            STSTransitionInterface[] tActualSceneInterfaced = GetTransitionInterface(tActualScene);
            STSTransitionInterface[] tOtherSceneInterfaced  = GetOtherTransitionInterface(tActualScene);
            // disable the user interactions
            EventSystemPrevent(false);
            // post scene is disable!
            //if (tActualSceneParams.Interfaced != null)
            //{
            //    tActualSceneParams.Interfaced.OnTransitionSceneDisable(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneDisable(sTransitionData);
            }
            // scene start effect transition out!
            AnimationTransitionOut(tActualSceneParams, sTransitionData);
            // post scene start effect transition out!
            //if (tActualSceneParams.Interfaced != null)
            //{
            //    tActualSceneParams.Interfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit);
            //}
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, false);
            }
            // waiting effect will finish
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            // post scene finish effcet transition out
            //if (tActualSceneParams.Interfaced != null)
            //{
            //    tActualSceneParams.Interfaced.OnTransitionExitFinish(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, false);
            }
            //-------------------------------
            // Intermission SCENE LOAD AND ENABLE
            //-------------------------------
            // load transition scene async
            AsyncOperation tAsyncOperationIntermission = SceneManager.LoadSceneAsync(sIntermissionScene, LoadSceneMode.Additive);

            tAsyncOperationIntermission.allowSceneActivation = true;
            while (tAsyncOperationIntermission.progress < 0.9f)
            {
                yield return(null);
            }
            Scene tIntermissionScene = SceneManager.GetSceneByName(sIntermissionScene);

            while (!tAsyncOperationIntermission.isDone)
            {
                AudioListenerEnable(tIntermissionScene, false);
                yield return(null);
            }
            // get Transition Scene
            // Active the next scene as root scene
            SceneManager.SetActiveScene(tIntermissionScene);
            // disable audiolistener of preview scene
            CameraPrevent(true);
            AudioListenerPrevent(true);
            // disable the user interactions until fadein
            EventSystemEnable(tIntermissionScene, false);
            // get params
            STSTransition tIntermissionSceneParams = GetTransitionsParams(tIntermissionScene);

            STSTransitionInterface[]   tIntermissionSceneInterfaced = GetTransitionInterface(tIntermissionScene);
            STSIntermissionInterface[] tIntermissionInterfaced      = GetIntermissionInterface(tIntermissionScene);
            STSIntermission            tIntermissionSceneStandBy    = GetStandByParams(tIntermissionScene);
            //-------------------------------
            // COUNT SCENES TO REMOVE OR ADD
            //-------------------------------
            float tSceneCount   = sScenesToAdd.Count + sScenesToRemove.Count;
            int   tSceneCounter = 0;

            //-------------------------------
            // UNLOADED SCENES REMOVED
            //-------------------------------
            foreach (string tSceneToRemove in sScenesToRemove)
            {
                //Debug.Log("tSceneToRemove :" + tSceneToRemove);
                // fadeout is finish
                // will unloaded the  scene
                Scene                    tSceneToDelete           = SceneManager.GetSceneByName(tSceneToRemove);
                STSTransition            tSceneToDeleteParams     = GetTransitionsParams(tSceneToDelete);
                STSTransitionInterface[] tSceneToDeleteInterfaced = GetTransitionInterface(tSceneToDelete);
                //if (tSceneToDeleteParams.Interfaced != null)
                //{
                //    tSceneToDeleteParams.Interfaced.OnTransitionSceneWillUnloaded(sTransitionData);
                //}
                foreach (STSTransitionInterface tInterfaced in tSceneToDeleteInterfaced)
                {
                    tInterfaced.OnTransitionSceneWillUnloaded(sTransitionData);
                }
                if (SceneManager.GetSceneByName(tSceneToRemove).isLoaded)
                {
                    AsyncOperation tAsyncOperationRemove = SceneManager.UnloadSceneAsync(tSceneToRemove);

                    if (tAsyncOperationRemove != null)
                    {
                        tAsyncOperationRemove.allowSceneActivation = true; //? needed?
                                                                           //while (tAsyncOperationRemove.progress < 0.9f)
                                                                           //{
                                                                           //    if (tIntermissionSceneStandBy.Interfaced != null)
                                                                           //    {
                                                                           //        tIntermissionSceneStandBy.Interfaced.OnLoadingNextScenePercent(sTransitionData, tSceneToRemove, tSceneCounter, tAsyncOperationRemove.progress, (tSceneCounter + tAsyncOperationRemove.progress) / tSceneCount);
                                                                           //    }
                                                                           //    yield return null;
                                                                           //}
                                                                           //while (!tAsyncOperationRemove.isDone)
                                                                           //{
                                                                           //    yield return null;
                                                                           //}
                    }
                    else
                    {
                        Debug.LogWarning("UnloadSceneAsync is not possible for " + tSceneToRemove);
                    }
                }

                foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
                {
                    tInterfaced.OnUnloadScene(sTransitionData, tSceneToRemove, tSceneCounter, (tSceneCounter + 1.0F) / tSceneCount);
                }
                tSceneCounter++;
                //Debug.Log("tSceneToRemove :" + tSceneToRemove + " finish!");
            }
            //-------------------------------
            // Intermission start enter animation
            //-------------------------------
            // get params
            // Intermission scene is loaded
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionSceneLoaded(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneLoaded(sTransitionData);
            }
            // animation in Go!
            AnimationTransitionIn(tIntermissionSceneParams, sTransitionData);
            // animation in
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnEnter, tIntermissionSceneParams.InterEffectDuration);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnEnter, tIntermissionSceneParams.InterEffectDuration, true);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            // animation in Finish
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionEnterFinish(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, true);
            }
            // enable the user interactions
            EventSystemEnable(tIntermissionScene, true);
            // enable the user interactions
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionSceneEnable(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneEnable(sTransitionData);
            }
            //-------------------------------
            // Intermission SCENE START STAND BY
            //-------------------------------
            // start stand by
            foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
            {
                tInterfaced.OnStandByStart(tIntermissionSceneStandBy);
            }
            StandBy();
            //-------------------------------
            // LOADED SCENES ADDED
            //-------------------------------
            foreach (string tSceneToLoad in sScenesToAdd)
            {
                //Debug.Log("tSceneToAdd :" + tSceneToAdd);
                Scene tSceneToAdd = SceneManager.GetSceneByName(tSceneToLoad);
                if (SceneManager.GetSceneByName(tSceneToLoad).isLoaded)
                {
                    foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
                    {
                        tInterfaced.OnSceneAllReadyLoaded(sTransitionData, tSceneToLoad, tSceneCounter, (tSceneCounter + 1.0F) / tSceneCount);
                    }
                    //Debug.Log("tSceneToAdd :" + tSceneToAdd + " allready finish!");
                    AudioListenerEnable(tSceneToAdd, false);
                    CameraPreventEnable(tSceneToAdd, false);
                    EventSystemEnable(tSceneToAdd, false);
                }
                else
                {
                    foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
                    {
                        tInterfaced.OnLoadingSceneStart(sTransitionData, tSceneToLoad, tSceneCounter, 0.0F, 0.0F);
                    }

                    AsyncOperation tAsyncOperationAdd = SceneManager.LoadSceneAsync(tSceneToLoad, LoadSceneMode.Additive);
                    tAsyncOperationList.Add(tSceneToLoad, tAsyncOperationAdd);
                    tAsyncOperationAdd.allowSceneActivation = false;
                    while (tAsyncOperationAdd.progress < 0.9f)
                    {
                        foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
                        {
                            tInterfaced.OnLoadingScenePercent(sTransitionData, tSceneToLoad, tSceneCounter, tAsyncOperationAdd.progress, (tSceneCounter + tAsyncOperationAdd.progress) / tSceneCount);
                        }
                        yield return(null);
                    }
                    foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
                    {
                        tInterfaced.OnLoadingSceneFinish(sTransitionData, tSceneToLoad, tSceneCounter, 1.0F, (tSceneCounter + 1.0F) / tSceneCount);
                    }
                    //Debug.Log("tSceneToAdd :" + tSceneToAdd + " 90%!");
                }
                tSceneCounter++;
            }
            //-------------------------------
            // Intermission STAND BY
            //-------------------------------
            while (StandByIsProgressing(tIntermissionSceneStandBy))
            {
                yield return(null);
            }
            // As soon as possible
            foreach (STSIntermissionInterface tInterfaced in tIntermissionInterfaced)
            {
                tInterfaced.OnStandByFinish(tIntermissionSceneStandBy);
            }
            // Waiting to load the next Scene
            while (WaitingToLauchNextScene(tIntermissionSceneStandBy))
            {
                //Debug.Log ("StandByIsNotFinished loop");
                yield return(null);
            }
            //-------------------------------
            // Intermission GO TO NEXT SCENE PROCESS
            //-------------------------------
            // stanby is finished And the next scene can be lauch
            // disable user interactions on the Intermission scene
            EventSystemEnable(tIntermissionScene, false);
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionSceneDisable(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneDisable(sTransitionData);
            }
            // Intermission scene Transition Out GO!
            AnimationTransitionOut(tIntermissionSceneParams, sTransitionData);
            // Intermission scene Transition Out start
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnExit, tIntermissionSceneParams.InterEffectDuration);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, tIntermissionSceneParams.EffectOnExit, tIntermissionSceneParams.InterEffectDuration, true);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            // Intermission scene Transition Out finished!
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionExitFinish(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, true);
            }
            // fadeout is finish
            // will unloaded the Intermission scene
            //if (tIntermissionSceneParams.Interfaced != null)
            //{
            //    tIntermissionSceneParams.Interfaced.OnTransitionSceneWillUnloaded(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tIntermissionSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneWillUnloaded(sTransitionData);
            }
            //-------------------------------
            // ACTIVE ADDED SCENES
            //-------------------------------
            foreach (string tSceneToAdd in sScenesToAdd)
            {
                // scene is loaded!
                if (tAsyncOperationList.ContainsKey(tSceneToAdd))
                {
                    AsyncOperation tAsyncOperationAdd = tAsyncOperationList[tSceneToAdd];
                    Scene          tSceneToLoad       = SceneManager.GetSceneByName(tSceneToAdd);
                    tAsyncOperationAdd.allowSceneActivation = true;
                    while (!tAsyncOperationAdd.isDone)
                    {
                        AudioListenerEnable(tSceneToLoad, false);
                        yield return(null);
                    }
                    AudioListenerEnable(tSceneToLoad, false);
                    CameraPreventEnable(tSceneToLoad, false);
                    EventSystemEnable(tSceneToLoad, false);
                    STSTransitionInterface[] tSceneToLoadInterfaced = GetTransitionInterface(tSceneToLoad);
                    foreach (STSTransitionInterface tInterfaced in tSceneToLoadInterfaced)
                    {
                        tInterfaced.OnTransitionSceneLoaded(sTransitionData);
                    }
                }
            }
            //-------------------------------
            // NEXT SCENE PROCESS
            //-------------------------------
            Scene tNextActiveScene = SceneManager.GetSceneByName(sNextActiveScene);

            SceneManager.SetActiveScene(tNextActiveScene);
            AudioListenerPrevent(true);
            CameraPrevent(true);
            // get params
            STSTransition sNextSceneParams = GetTransitionsParams(tNextActiveScene);

            STSTransitionInterface[] tNextSceneInterfaced      = GetTransitionInterface(tNextActiveScene);
            STSTransitionInterface[] tOtherNextSceneInterfaced = GetOtherTransitionInterface(tNextActiveScene);
            EventSystemEnable(tNextActiveScene, false);
            // Next scene appear by fade in
            //-------------------------------
            // Intermission UNLOAD
            //-------------------------------
            AsyncOperation tAsyncOperationIntermissionUnload = SceneManager.UnloadSceneAsync(tIntermissionScene);

            if (tAsyncOperationIntermissionUnload != null)
            {
                tAsyncOperationIntermissionUnload.allowSceneActivation = true; //? needed?
                while (tAsyncOperationIntermissionUnload.progress < 0.9f)
                {
                    yield return(null);
                }
                while (!tAsyncOperationIntermissionUnload.isDone)
                {
                    yield return(null);
                }
            }
            else
            {
                Debug.LogWarning("UnloadSceneAsync is not possible for " + tIntermissionScene);
            }
            //-------------------------------
            // NEXT SCENE ENABLE
            //-------------------------------
            AnimationTransitionIn(sNextSceneParams, sTransitionData);
            //if (sNextSceneParams.Interfaced != null)
            //{
            //    sNextSceneParams.Interfaced.OnTransitionEnterStart(sTransitionData, sNextSceneParams.EffectOnEnter, sNextSceneParams.InterEffectDuration);
            //}
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, sNextSceneParams.EffectOnEnter, sNextSceneParams.InterEffectDuration, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, sNextSceneParams.EffectOnEnter, sNextSceneParams.InterEffectDuration, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            //if (sNextSceneParams.Interfaced != null)
            //{
            //    sNextSceneParams.Interfaced.OnTransitionEnterFinish(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, false);
            }
            // fadein is finish
            EventSystemPrevent(true);
            // next scene is enable
            //if (sNextSceneParams.Interfaced != null)
            //{
            //    sNextSceneParams.Interfaced.OnTransitionSceneEnable(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneEnable(sTransitionData);
            }
            // My transition is finish. I can do an another transition
            TransitionInProgress = false;
        }
Example #8
0
        //-------------------------------------------------------------------------------------------------------------
        private IEnumerator INTERNAL_ChangeScenesWithoutIntermission(
            string sActualActiveScene,
            string sNextActiveScene,
            List <string> sScenesToAdd,
            List <string> sScenesToRemove,
            STSTransitionData sTransitionData)
        {
            bool tRemoveActual = false;

            if (sScenesToRemove.Contains(sActualActiveScene))
            {
                sScenesToRemove.Remove(sActualActiveScene);
                tRemoveActual = true;
            }
            //AsyncOperation tAsyncOperation;
            Dictionary <string, AsyncOperation> tAsyncOperationList = new Dictionary <string, AsyncOperation>();

            //-------------------------------
            // ACTUAL SCENE DISABLE
            //-------------------------------
            TransitionInProgress = true;
            //-------------------------------
            Scene tActualScene = SceneManager.GetSceneByName(sActualActiveScene);
            //-------------------------------
            STSTransition tActualSceneParams = GetTransitionsParams(tActualScene);

            STSTransitionInterface[] tActualSceneInterfaced = GetTransitionInterface(tActualScene);
            STSTransitionInterface[] tOtherSceneInterfaced  = GetOtherTransitionInterface(tActualScene);
            // disable the user interactions
            EventSystemPrevent(false);
            // post scene is disable!
            //if (tActualSceneParams.Interfaced != null)
            //{
            //    tActualSceneParams.Interfaced.OnTransitionSceneDisable(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneDisable(sTransitionData);
            }
            // scene start effect transition out!
            AnimationTransitionOut(tActualSceneParams, sTransitionData);
            // post scene start effect transition out!
            //if (tActualSceneParams.Interfaced != null)
            //{
            //    tActualSceneParams.Interfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit);
            //}
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitStart(sTransitionData, tActualSceneParams.EffectOnExit, false);
            }
            // waiting effect will finish
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            // post scene finish effcet transition out
            //if (tActualSceneParams.Interfaced != null)
            //{
            //    tActualSceneParams.Interfaced.OnTransitionExitFinish(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherSceneInterfaced)
            {
                tInterfaced.OnTransitionExitFinish(sTransitionData, false);
            }
            //-------------------------------
            // COUNT SCENES TO REMOVE OR ADD
            //-------------------------------
            float tSceneCount   = sScenesToAdd.Count + sScenesToRemove.Count;
            int   tSceneCounter = 0;

            //-------------------------------
            // UNLOADED SCENES REMOVED
            //-------------------------------
            foreach (string tSceneToRemove in sScenesToRemove)
            {
                //Debug.Log("tSceneToRemove :" + tSceneToRemove);
                // fadeout is finish
                // will unloaded the  scene
                Scene tSceneToDelete = SceneManager.GetSceneByName(tSceneToRemove);
                AudioListenerEnable(tSceneToDelete, false);
                CameraPreventEnable(tSceneToDelete, false);
                EventSystemEnable(tSceneToDelete, false);
                STSTransitionInterface[] tSceneToDeleteInterfaced = GetTransitionInterface(tSceneToDelete);
                //STSTransition tSceneToDeleteParams = GetTransitionsParams(tSceneToDelete, false);
                //if (tSceneToDeleteParams.Interfaced != null)
                //{
                //    tSceneToDeleteParams.Interfaced.OnTransitionSceneWillUnloaded(sTransitionData);
                //}
                foreach (STSTransitionInterface tInterfaced in tSceneToDeleteInterfaced)
                {
                    tInterfaced.OnTransitionSceneWillUnloaded(sTransitionData);
                }
                if (SceneManager.GetSceneByName(tSceneToRemove).isLoaded)
                {
                    AsyncOperation tAsyncOperationRemove = SceneManager.UnloadSceneAsync(tSceneToRemove);
                    tAsyncOperationRemove.allowSceneActivation = true; //? needed?
                                                                       //while (tAsyncOperationRemove.progress < 0.9f)
                                                                       //{
                                                                       //    yield return null;
                                                                       //}
                                                                       //while (!tAsyncOperationRemove.isDone)
                                                                       //{
                                                                       //    yield return null;
                                                                       //}
                }
                tSceneCounter++;
                //Debug.Log("tSceneToRemove :" + tSceneToRemove + " finish!");
            }
            //-------------------------------
            // LOADED SCENES ADDED
            //-------------------------------
            foreach (string tSceneToAdd in sScenesToAdd)
            {
                //Debug.Log("tSceneToAdd :" + tSceneToAdd);
                if (SceneManager.GetSceneByName(tSceneToAdd).isLoaded)
                {
                    //Debug.Log("tSceneToAdd :" + tSceneToAdd + " allready finish!");
                }
                else
                {
                    AsyncOperation tAsyncOperationAdd = SceneManager.LoadSceneAsync(tSceneToAdd, LoadSceneMode.Additive);
                    tAsyncOperationList.Add(tSceneToAdd, tAsyncOperationAdd);
                    tAsyncOperationAdd.allowSceneActivation = false;
                    //Debug.Log("tSceneToAdd :" + tSceneToAdd + " 90%!");
                }
                tSceneCounter++;
            }
            //-------------------------------
            // ACTIVE ADDED SCENES
            //-------------------------------
            foreach (string tSceneToAdd in sScenesToAdd)
            {
                // scene is loaded!
                if (tAsyncOperationList.ContainsKey(tSceneToAdd))
                {
                    Scene          tSceneToLoad       = SceneManager.GetSceneByName(tSceneToAdd);
                    AsyncOperation tAsyncOperationAdd = tAsyncOperationList[tSceneToAdd];
                    tAsyncOperationAdd.allowSceneActivation = true;
                    while (tAsyncOperationAdd.progress < 0.9f)
                    {
                        yield return(null);
                    }
                    while (!tAsyncOperationAdd.isDone)
                    {
                        AudioListenerEnable(tSceneToLoad, false);
                        yield return(null);
                    }
                    AudioListenerEnable(tSceneToLoad, false);
                    CameraPreventEnable(tSceneToLoad, false);
                    EventSystemEnable(tSceneToLoad, false);
                    STSTransitionInterface[] tSceneToLoadInterfaced = GetTransitionInterface(tSceneToLoad);
                    foreach (STSTransitionInterface tInterfaced in tSceneToLoadInterfaced)
                    {
                        tInterfaced.OnTransitionSceneLoaded(sTransitionData);
                    }
                    //Debug.Log("tSceneToAdd :" + tSceneToAdd + " finish!");
                }
            }
            //-------------------------------
            // NEXT SCENE PROCESS
            //-------------------------------
            Scene tNextActiveScene = SceneManager.GetSceneByName(sNextActiveScene);

            SceneManager.SetActiveScene(tNextActiveScene);
            CameraPrevent(true);
            AudioListenerPrevent(true);
            // get params
            STSTransition sNextSceneParams = GetTransitionsParams(tNextActiveScene);

            STSTransitionInterface[] tNextSceneInterfaced      = GetTransitionInterface(tNextActiveScene);
            STSTransitionInterface[] tOtherNextSceneInterfaced = GetOtherTransitionInterface(tNextActiveScene);
            EventSystemEnable(tNextActiveScene, false);
            // Next scene appear by fade in
            //-------------------------------
            // Intermission UNLOAD
            //-------------------------------
            if (tRemoveActual == true)
            {
                foreach (STSTransitionInterface tInterfaced in tActualSceneInterfaced)
                {
                    tInterfaced.OnTransitionSceneWillUnloaded(sTransitionData);
                }
                AsyncOperation tAsyncOperationIntermissionUnload = SceneManager.UnloadSceneAsync(sActualActiveScene);
                tAsyncOperationIntermissionUnload.allowSceneActivation = true;
            }
            //-------------------------------
            // NEXT SCENE ENABLE
            //-------------------------------
            AnimationTransitionIn(sNextSceneParams, sTransitionData);
            //if (sNextSceneParams.Interfaced != null)
            //{
            //    sNextSceneParams.Interfaced.OnTransitionEnterStart(sTransitionData, sNextSceneParams.EffectOnEnter, sNextSceneParams.InterEffectDuration);
            //}
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, sNextSceneParams.EffectOnEnter, sNextSceneParams.InterEffectDuration, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterStart(sTransitionData, sNextSceneParams.EffectOnEnter, sNextSceneParams.InterEffectDuration, false);
            }
            while (AnimationFinished() == false)
            {
                yield return(null);
            }
            //if (sNextSceneParams.Interfaced != null)
            //{
            //    sNextSceneParams.Interfaced.OnTransitionEnterFinish(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, true);
            }
            foreach (STSTransitionInterface tInterfaced in tOtherNextSceneInterfaced)
            {
                tInterfaced.OnTransitionEnterFinish(sTransitionData, false);
            }
            // fadein is finish
            EventSystemPrevent(true);
            // next scene is enable
            //if (sNextSceneParams.Interfaced != null)
            //{
            //    sNextSceneParams.Interfaced.OnTransitionSceneEnable(sTransitionData);
            //}
            foreach (STSTransitionInterface tInterfaced in tNextSceneInterfaced)
            {
                tInterfaced.OnTransitionSceneEnable(sTransitionData);
            }
            // My transition is finish. I can do an another transition
            TransitionInProgress = false;
        }
        //-------------------------------------------------------------------------------------------------------------
        public STSTransition GetTransitionsParams(Scene sScene)
        {
            STSTransition tTransitionParametersScript;

            if (STSTransition.SharedInstanceExists(sScene))
            {
                //Debug.LogWarning("tTransitionParametersScript exists");
                tTransitionParametersScript = STSTransition.SharedInstance(sScene);
            }
            else
            {
                //Debug.LogWarning("tTransitionParametersScript not exists");
                tTransitionParametersScript = STSTransition.SharedInstance(sScene);
                if (DefaultEffectOnEnter != null)
                {
                    tTransitionParametersScript.EffectOnEnter = DefaultEffectOnEnter.Dupplicate();
                }
                else
                {
                    tTransitionParametersScript.EffectOnEnter = STSEffectType.Default.Dupplicate();
                }
                if (DefaultEffectOnExit != null)
                {
                    tTransitionParametersScript.EffectOnExit = DefaultEffectOnExit.Dupplicate();
                }
                else
                {
                    tTransitionParametersScript.EffectOnExit = STSEffectType.Default.Dupplicate();
                }
            }

            /*
             *          //Debug.Log("STSSceneManager GetTransitionsParams()");
             *          STSTransition tTransitionParametersScript = null;
             *          GameObject[] tAllRootObjects = sScene.GetRootGameObjects();
             *          // quick solution?!
             *          foreach (GameObject tObject in tAllRootObjects)
             *          {
             *                  if (tObject.GetComponent<STSTransition>() != null)
             *                  {
             *                          tTransitionParametersScript = tObject.GetComponent<STSTransition>();
             *                          break;
             *                  }
             *          }
             *          // slower solution?!
             *          if (tTransitionParametersScript == null)
             *          {
             *                  foreach (GameObject tObject in tAllRootObjects)
             *                  {
             *                          if (tObject.GetComponentInChildren<STSTransition>() != null)
             *                          {
             *                                  tTransitionParametersScript = tObject.GetComponent<STSTransition>();
             *                                  break;
             *                          }
             *                  }
             *          }
             *          // no solution?!
             *          if (tTransitionParametersScript == null)
             *          {
             *                  Scene tActual = SceneManager.GetActiveScene();
             *                  SceneManager.SetActiveScene(sScene);
             *                  // create Game Object?
             *                  //Debug.Log ("NO PARAMS");
             *                  GameObject tObjToSpawn = new GameObject(STSConstants.K_TRANSITION_DEFAULT_OBJECT_NAME);
             *                  tObjToSpawn.AddComponent<STSSceneController>();
             *                  tTransitionParametersScript = tObjToSpawn.AddComponent<STSTransition>();
             *                  if (DefaultEffectOnEnter != null)
             *                  {
             *                          tTransitionParametersScript.EffectOnEnter = DefaultEffectOnEnter.Dupplicate();
             *                  }
             *                  else
             *                  {
             *                          tTransitionParametersScript.EffectOnEnter = STSEffectType.Default.Dupplicate();
             *                  }
             *                  if (DefaultEffectOnEnter != null)
             *                  {
             *                          tTransitionParametersScript.EffectOnExit = DefaultEffectOnExit.Dupplicate();
             *                  }
             *                  else
             *                  {
             *                          tTransitionParametersScript.EffectOnExit = STSEffectType.Default.Dupplicate();
             *                  }
             *                  SceneManager.SetActiveScene(tActual);
             *          }
             */
            return(tTransitionParametersScript);
        }