Exemple #1
0
    public void SetScenePosition(SceneBorder.BorderPosition borderPos)
    {
        GameObject SceneObject     = SceneManager.GetActiveScene().GetRootGameObjects()[0];
        GameObject PrevSceneObject = PrevActive.GetRootGameObjects()[0];
        SceneParam SceneParm       = SceneObject.GetComponent <SceneParam>();
        SceneParam PrevSceneParm   = PrevSceneObject.GetComponent <SceneParam>();

        switch (borderPos)
        {
        case SceneBorder.BorderPosition.top:
            SceneObject.transform.position = new Vector3(0, (-SceneParm.BottomBorder.transform.position.y + PrevSceneParm.TopBorder.transform.position.y), 0);
            break;

        case SceneBorder.BorderPosition.bottom:
            SceneObject.transform.position = new Vector3(0, -(SceneParm.TopBorder.transform.position.y - PrevSceneParm.BottomBorder.transform.position.y), 0);
            break;

        case SceneBorder.BorderPosition.right:
            SceneObject.transform.position = new Vector3((-SceneParm.LeftBorder.transform.position.x + PrevSceneParm.RightBorder.transform.position.x), 0, 0);
            break;

        case SceneBorder.BorderPosition.left:
            SceneObject.transform.position = new Vector3(-(SceneParm.RightBorder.transform.position.x - PrevSceneParm.LeftBorder.transform.position.x), 0, 0);
            break;
        }
    }
Exemple #2
0
 IEnumerator WaitToLoad(string Level, SceneBorder.BorderPosition borderPos = SceneBorder.BorderPosition.None)
 {
     while (!async.isDone)
     {
         yield return(new WaitForEndOfFrame());
     }
     PrevActive = SceneManager.GetActiveScene();
     SceneManager.SetActiveScene(SceneManager.GetSceneByName(Level));
     if (borderPos != SceneBorder.BorderPosition.None)
     {
         SetScenePosition(borderPos);
     }
 }
Exemple #3
0
 /// <summary>
 /// For scene loads and unloads in game, we will have invisible boundaries with a generic script where I can set the index of the scenes between which
 /// the boundary belongs.
 /// </summary>
 /// <param name="sceneIndex"></param>
 public void LoadAdditiveScene(string sceneName, SceneBorder.BorderPosition borderPos = SceneBorder.BorderPosition.None)
 {
     async = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
     LoadedAdditives.Add(sceneName);
     StartCoroutine(WaitToLoad(sceneName, borderPos));
 }