/// <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); } }
/// <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); }