Example #1
0
    public static Fun_MonoBehaviourInitializer Run()
    {
        GameObject initializerGO = new GameObject("MonoBehavior Initializer");
        Fun_MonoBehaviourInitializer initializer = initializerGO.AddComponent <Fun_MonoBehaviourInitializer>();

        initializer.RunInit();
        return(initializer);
    }
Example #2
0
 private static void HandlePlayModeChanged(PlayModeStateChange state)
 {
     Fun_MonoBehaviourInitializer.Initialized = false;
     if (state == PlayModeStateChange.EnteredPlayMode)
     {
         Time.timeScale = 0f;
         Fun_MonoBehaviourInitializer initializer = Fun_MonoBehaviourInitializer.Run();
         initializer.OnInitializationComplete.AddListener(LoadEnded);
         if (Fun_MonoBehaviourInitializer.Initialized)
         {
             LoadEnded();
         }
     }
 }
Example #3
0
    IEnumerator DoLevelLoad(LevelData levelToLoad)
    {
        IsLoading = true;

        Debug.Log("Starting Level Load : " + levelToLoad.SceneFile.SceneName);

        DontDestroyOnLoad(gameObject);

        Scene oldScene = SceneManager.GetActiveScene();

        SceneTransitioner transitioner = SceneTransitioner.GetTransition(SceneTransitionType.Fade);

        transitioner.Run(SceneTransitionDirection.Out, 1f, false);
        yield return(new WaitForSecondsRealtime(1.1f));

        //First load the loading screen
        AsyncOperation loadOp = SceneManager.LoadSceneAsync(SceneNames.LoadingScreen, LoadSceneMode.Single);

        while (!loadOp.isDone)
        {
            yield return(null);
        }

        Fun_MonoBehaviourInitializer.Initialized = false;

        transitioner.Run(SceneTransitionDirection.In, 1f, false);
        yield return(new WaitForSecondsRealtime(1.1f));

        Time.timeScale = 0f;

        //Then load the new level
        loadOp = SceneManager.LoadSceneAsync(levelToLoad.SceneFile.SceneName, LoadSceneMode.Additive);
        Scene sceneToLoad = SceneManager.GetSceneByName(levelToLoad.SceneFile.SceneName);

        loadOp.allowSceneActivation = false;
        while (!loadOp.isDone && !sceneToLoad.isLoaded)
        {
            if (loadOp.progress >= .9f)
            {
                loadOp.allowSceneActivation = true;
            }

            yield return(null);
        }

        Debug.Log("Scene " + levelToLoad.SceneFile.SceneName + " Loaded; Setting Active");
        SceneManager.SetActiveScene(sceneToLoad);

        //now do our fun monobehaviour queueing!!
        Fun_MonoBehaviourInitializer.Run();

        while (!Fun_MonoBehaviourInitializer.Initialized)
        {
            yield return(null);
        }

        yield return(null);

        transitioner.Run(SceneTransitionDirection.Out, 1f, false);
        yield return(new WaitForSecondsRealtime(1.1f));

        //unload the loading screen
        AsyncOperation unloadOp = SceneManager.UnloadSceneAsync(SceneNames.LoadingScreen);

        while (!unloadOp.isDone)
        {
            yield return(null);
        }

        Time.timeScale = 1f;

        Debug.Log("Loading Screen Unloaded");

        transitioner.Run(SceneTransitionDirection.In, 1f, true);
        yield return(new WaitForSecondsRealtime(1.1f));

        IsLoading = false;

        Debug.Log("Successfully Loaded Level : " + levelToLoad.SceneFile.SceneName);

        Destroy(gameObject);
    }
Example #4
0
 protected virtual void Awake()
 {
     Fun_MonoBehaviourInitializer.QueueAwake(this);
 }
Example #5
0
 protected virtual void Start()
 {
     Fun_MonoBehaviourInitializer.QueueStart(this);
 }