Ejemplo n.º 1
0
        /// <summary>
        /// Loads a scene and calls an internal delegate when done. The delegate is
        /// used by the LoadNeighbors() method.
        /// </summary>
        /// <param name="sceneName">Scene name.</param>
        /// <param name="loadedHandler">Loaded handler.</param>
        /// <param name="distance">Distance from the current scene.</param>
        private void Load(string sceneName, InternalLoadedHandler loadedHandler, int distance)
        {
            if (IsLoaded(sceneName))
            {
                if (loadedHandler != null)
                {
                    loadedHandler(sceneName, distance);
                }
                return;
            }
            m_loading.Add(sceneName);
            if (logDebugInfo && distance > 0)
            {
                Debug.Log("Scene Streamer: Loading " + sceneName + ".");
            }
#if UNITY_4_6 || UNITY_4_7
            if (Application.HasProLicense())
            {
                StartCoroutine(LoadAdditiveAsync(sceneName, loadedHandler, distance));
            }
            else
            {
                StartCoroutine(LoadAdditive(sceneName, loadedHandler, distance));
            }
#else
            StartCoroutine(LoadAdditiveAsync(sceneName, loadedHandler, distance));
#endif
        }
Ejemplo n.º 2
0
    /// (Unity Pro) Runs Application.LoadLevelAdditiveAsync() and calls FinishLoad() when done.
    private IEnumerator LoadAdditiveAsync(string sceneName, InternalLoadedHandler loadedHandler, int distance)
    {
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);

        onLoading.Invoke(sceneName, asyncOperation);
        yield return(asyncOperation);

        FinishLoad(sceneName, loadedHandler, distance);
    }
Ejemplo n.º 3
0
        /// <summary>
        /// <para>Ejecuta Application.LoadLevelAdditiveAsync() y llama a FinishLoad() cuando se realiza.</para>
        /// </summary>
        /// <param name="sceneName">Nombre escena.</param>
        /// <param name="loadedHandler">Delegado.</param>
        /// <param name="distance">Distancia.</param>
        private IEnumerator LoadAdditiveAsync(string sceneName, InternalLoadedHandler loadedHandler, int distance)        // Ejecuta Application.LoadLevelAdditiveAsync() y llama a FinishLoad() cuando se realiza
        {
            AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);

            onLoading.Invoke(sceneName, asyncOperation);

            yield return(asyncOperation);

            FinishLoad(sceneName, loadedHandler, distance);
        }
Ejemplo n.º 4
0
    /// (Unity) Runs Application.LoadLevelAdditive() and calls FinishLoad() when done.
    /// This coroutine waits two frames to wait for the load to complete.
    private IEnumerator LoadAdditive(string sceneName, InternalLoadedHandler loadedHandler, int distance)
    {
        SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
        onLoading.Invoke(sceneName, null);
        yield return(new WaitForEndOfFrame());

        yield return(new WaitForEndOfFrame());

        FinishLoad(sceneName, loadedHandler, distance);
    }
Ejemplo n.º 5
0
        /// <summary>
        /// <para>Ejecuta Application.LoadLevelAdditiveAsync() y llama a FinishLoad() cuando se realiza.</para>
        /// </summary>
        /// <param name="sceneName">Nombre escena.</param>
        /// <param name="loadedHandler">Delegado.</param>
        /// <param name="distance">Distancia.</param>
        private IEnumerator LoadAdditive(string sceneName, InternalLoadedHandler loadedHandler, int distance)        // Ejecuta Application.LoadLevelAdditiveAsync() y llama a FinishLoad() cuando se realiza
        {
            SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);

            onLoading.Invoke(sceneName, null);

            yield return(new WaitForEndOfFrame());

            yield return(new WaitForEndOfFrame());

            FinishLoad(sceneName, loadedHandler, distance);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// (Unity Pro) Runs Application.LoadLevelAdditiveAsync() and calls FinishLoad() when done.
        /// </summary>
        /// <param name="sceneName">Scene name.</param>
        /// <param name="loadedHandler">Loaded handler.</param>
        /// <param name="distance">Distance.</param>
        private IEnumerator LoadAdditiveAsync(string sceneName, InternalLoadedHandler loadedHandler, int distance)
        {
#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2
            AsyncOperation asyncOperation = Application.LoadLevelAdditiveAsync(sceneName);
#else
            AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
#endif
            onLoading.Invoke(sceneName, asyncOperation);
            yield return(asyncOperation);

            FinishLoad(sceneName, loadedHandler, distance);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// (Unity) Runs Application.LoadLevelAdditive() and calls FinishLoad() when done.
        /// This coroutine waits two frames to wait for the load to complete.
        /// </summary>
        /// <returns>The additive.</returns>
        /// <param name="sceneName">Scene name.</param>
        /// <param name="loadedHandler">Loaded handler.</param>
        /// <param name="distance">Distance.</param>
        private IEnumerator LoadAdditive(string sceneName, InternalLoadedHandler loadedHandler, int distance)
        {
#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2
            Application.LoadLevelAdditive(sceneName);
#else
            SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
#endif
            onLoading.Invoke(sceneName, null);
            yield return(new WaitForEndOfFrame());

            yield return(new WaitForEndOfFrame());

            FinishLoad(sceneName, loadedHandler, distance);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// <para>Se llama cuando se hace un nivel de carga.</para>
        /// </summary>
        /// <param name="sceneName">Nombre escena.</param>
        /// <param name="loadedHandler">Delegado.</param>
        /// <param name="distance">Distancia.</param>
        private void FinishLoad(string sceneName, InternalLoadedHandler loadedHandler, int distance)        // Se llama cuando se hace un nivel de carga
        {
            GameObject scene = GameObject.Find(sceneName);

            if (scene == null && Debug.isDebugBuild)
            {
                Debug.LogWarning("Scene Streamer: No se puede encontrar la escena cargada llamada '" + sceneName + "'.");
            }
            m_loading.Remove(sceneName);
            m_loaded.Add(sceneName);
            onLoaded.Invoke(sceneName);
            if (loadedHandler != null)
            {
                loadedHandler(sceneName, distance);
            }
        }
Ejemplo n.º 9
0
    /// Called when a level is done loading. Updates the loaded and loading lists, and
    /// calls the loaded handler.
    private void FinishLoad(string sceneName, InternalLoadedHandler loadedHandler, int distance)
    {
        GameObject scene = GameObject.Find(sceneName);

        if (scene == null && Debug.isDebugBuild)
        {
            Debug.LogWarning("Scene Streamer: Can't find loaded scene named '" + sceneName + "'.");
        }
        loading.Remove(sceneName);
        loaded.Add(sceneName);
        onLoaded.Invoke(sceneName);
        if (loadedHandler != null)
        {
            loadedHandler(sceneName, distance);
        }
    }
Ejemplo n.º 10
0
    /// Loads a scene and calls an internal delegate when done. The delegate is
    /// used by the LoadNeighbors() method.
    private void Load(string sceneName, InternalLoadedHandler loadedHandler, int distance)
    {
        if (IsLoaded(sceneName))
        {
            if (loadedHandler != null)
            {
                loadedHandler(sceneName, distance);
            }
            return;
        }

        loading.Add(sceneName);
        if (logDebugInfo && distance > 0)
        {
            Debug.Log("Scene Streamer: Loading " + sceneName + ".");
        }
        LoadAdditiveAsyncCoroutine(sceneName, loadedHandler, distance);
    }
Ejemplo n.º 11
0
        /// <summary>
        /// <para>Carga una escena y llama a un delegado interno cuando se hace.</para>
        /// </summary>
        /// <param name="sceneName">Nombre escena.</param>
        /// <param name="loadedHandler">Delegado.</param>
        /// <param name="distance">Distancia.</param>
        private void Load(string sceneName, InternalLoadedHandler loadedHandler, int distance)        // Carga una escena y llama a un delegado interno cuando se hace
        {
            if (IsLoaded(sceneName))
            {
                if (loadedHandler != null)
                {
                    loadedHandler(sceneName, distance);
                }
                return;
            }

            m_loading.Add(sceneName);
            if (logDebugInfo && distance > 0)
            {
                Debug.Log("Scene Streamer: Cargando " + sceneName + ".");
            }

            StartCoroutine(LoadAdditiveAsync(sceneName, loadedHandler, distance));
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Called when a level is done loading. Updates the loaded and loading lists, and
        /// calls the loaded handler.
        /// </summary>
        /// <param name="sceneName">Scene name.</param>
        /// <param name="loadedHandler">Loaded handler.</param>
        /// <param name="distance">Distance.</param>
        private void FinishLoad(string sceneName, InternalLoadedHandler loadedHandler, int distance)
        {
            GameObject scene = GameObject.Find(sceneName);

            if (scene == null && Debug.isDebugBuild)
            {
                Debug.LogWarning("Scene Streamer: Can't find loaded scene named '" + sceneName + "'.");
            }
#if !UNITY_5_3_OR_NEWER
            if (scene)
            {
                scene.transform.parent = sceneContainer.transform;
            }
#endif
            m_loading.Remove(sceneName);
            m_loaded.Add(sceneName);
            onLoaded.Invoke(sceneName);
            if (loadedHandler != null)
            {
                loadedHandler(sceneName, distance);
            }
        }
Ejemplo n.º 13
0
 private void LoadAdditiveAsyncCoroutine(string sceneName, InternalLoadedHandler loadedHandler, int distance)
 {
     Main.Instance.StartCoroutine(LoadAdditiveAsync(sceneName, loadedHandler, distance));
 }