Esempio n. 1
0
        /// <summary>
        /// <para>Carga las escenas vecinas dentro de maxNeighborDistance, agregandolas a la lista cercana.</para>
        /// </summary>
        /// <param name="sceneName">Nombre escena.</param>
        /// <param name="distance">Distancia.</param>
        private void LoadNeighbors(string sceneName, int distance)        // Carga las escenas vecinas dentro de maxNeighborDistance, agregandolas a la lista cercana
        {
            if (m_near.Contains(sceneName))
            {
                return;
            }

            m_near.Add(sceneName);

            if (distance >= maxNeighborDistance)
            {
                return;
            }

            GameObject scene = GameObject.Find(sceneName);

            NeighboringScenes neighboringScenes = (scene) ? scene.GetComponent <NeighboringScenes>() : null;

            if (!neighboringScenes)
            {
                neighboringScenes = CreateNeighboringScenesList(scene);
            }

            if (!neighboringScenes)
            {
                return;
            }

            for (int i = 0; i < neighboringScenes.sceneNames.Length; i++)
            {
                Load(neighboringScenes.sceneNames[i], LoadNeighbors, distance + 1);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// <para>Crea la lista de escenas vecinas</para>
        /// </summary>
        /// <returns>La lista de escenas vecinas.</returns>
        /// <param name="scene">Escena actual.</param>
        private NeighboringScenes CreateNeighboringScenesList(GameObject scene)        // Crea la lista de escenas vecinas
        {
            if (!scene)
            {
                return(null);
            }

            NeighboringScenes neighboringScenes = scene.AddComponent <NeighboringScenes>();
            HashSet <string>  neighbors         = new HashSet <string>();
            var sceneEdges = scene.GetComponentsInChildren <SceneEdge>();

            for (int i = 0; i < sceneEdges.Length; i++)
            {
                neighbors.Add(sceneEdges[i].nextSceneName);
            }

            neighboringScenes.sceneNames = new string[neighbors.Count];
            neighbors.CopyTo(neighboringScenes.sceneNames);

            return(neighboringScenes);
        }