Ejemplo n.º 1
0
    //void OnSceneUnloaded(Scene scene)
    //{
    //    ScenePromise promise = GetUnloadingScenePromise(scene.name);
    //    if (promise == null)
    //        return;

    //    promise.scene = scene;

    //    if (scene.isLoaded)
    //        StartCoroutine(WaitForSceneUnload(scene, promise));
    //    else
    //        Execute(promise);
    //}

    static IEnumerator WaitForSceneLoad(Scene scene, ScenePromise promise)
    {
        while (!scene.isLoaded)
        {
            yield return(null);
        }
        Execute(promise);
    }
Ejemplo n.º 2
0
 static void Execute(ScenePromise promise)
 {
     if (promise.callback != null)
     {
         promise.callback(promise.scene);
     }
     loadingScenes.Remove(promise);
 }
Ejemplo n.º 3
0
        static public void LoadAsync(string name, LoadSceneMode mode = LoadSceneMode.Single, UnityAction <Scene> callback = null, bool unique = true)
        {
            if (unique && Exists(name))
            {
                return;
            }

            ScenePromise scenePromise = new ScenePromise(name, callback);

            loadingScenes.Add(scenePromise);
            SceneManager.LoadSceneAsync(name, mode);
        }
Ejemplo n.º 4
0
    static public void LoadAsync(string name, LoadSceneMode mode = LoadSceneMode.Single, Action <Scene> callback = null, bool allowMultiple = true)
    {
        if (!allowMultiple && HandleUniqueLoad(name, callback))
        {
            return;
        }

        CheckSubscription();

        ScenePromise scenePromise = new ScenePromise(name, callback);

        loadingScenes.Add(scenePromise);
        SceneManager.LoadSceneAsync(name, mode);
    }
Ejemplo n.º 5
0
    static public void Load(string name, LoadSceneMode mode = LoadSceneMode.Single, Action <Scene> callback = null, bool allowMultiple = true)
    {
        if (!allowMultiple && _HandleUniqueLoad(name, callback))
        {
            return;
        }

        ListenIfNotListening();

        ScenePromise scenePromise = new ScenePromise(name, callback);

        loadingScenes.Add(scenePromise);
        SceneManager.LoadScene(name, mode);
    }
Ejemplo n.º 6
0
    static void OnSceneLoading(Scene scene, LoadSceneMode mode)
    {
        ScenePromise promise = GetLoadingScene(scene.name);

        if (promise == null)
        {
            return;
        }

        promise.scene = scene;

        if (!scene.isLoaded)
        {
            CoroutineLauncher.Instance.StartCoroutine(WaitForSceneLoad(scene, promise));
        }
        else
        {
            Execute(promise);
        }
    }
Ejemplo n.º 7
0
    static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        TotalSceneLoadCount++;
        ScenePromise promise = GetLoadingScenePromise(scene.name);

        if (promise == null)
        {
            return;
        }

        promise.Scene = scene;

        if (!scene.isLoaded)
        {
            Instance.StartCoroutine(WaitForSceneLoad(scene, promise));
        }
        else
        {
            Execute(promise);
        }
    }
Ejemplo n.º 8
0
    public static ISceneLoadPromise Load(string sceneName, SceneLoadSettings loadSettings)
    {
        // add new promise
        ScenePromise scenePromise = new ScenePromise(sceneName);

        Instance._loadingScenePromises.Add(scenePromise);


        LoadSceneParameters loadParameters = new LoadSceneParameters()
        {
            loadSceneMode    = loadSettings.LoadSceneMode,
            localPhysicsMode = loadSettings.LocalPhysicsMode
        };

        try
        {
            switch (loadSettings.LoadSceneMode)
            {
            case LoadSceneMode.Single:
                SceneManager.LoadScene(sceneName, loadParameters);
                break;

            case LoadSceneMode.Additive:
                SceneManager.LoadSceneAsync(sceneName, loadParameters);
                break;

            default:
                throw new NotSupportedException();
            }
        }
        catch (Exception e)
        {
            Debug.LogError(e.Message);
        }

        return(scenePromise);
    }
Ejemplo n.º 9
0
    //IEnumerator WaitForSceneUnload(Scene scene, ScenePromise promise)
    //{
    //    while (scene.isLoaded)
    //        yield return null;
    //    Execute(promise);
    //}

    static void Execute(ScenePromise promise)
    {
        promise.Complete();

        Instance._loadingScenePromises.Remove(promise);
    }
Ejemplo n.º 10
0
    static void Execute(ScenePromise promise)
    {
        promise.InvokeCallback();

        loadingScenes.Remove(promise);
    }