public void iniciarAlgoritmo(Nebulosa nebulosa) { SistemaPlanetario nodoInicialTemporal = null; nebulosaG = nebulosa; // buscar el nodo inicial foreach (var item in nebulosa.sistemasPlanetarios) { if (item.inicial) { nodoInicialTemporal = item; } if (item.tieneTeletransportador) { if (nodoInicialTemporal == null) { nodoInicialTemporal = item; } nodoInicial = item; } } List <SistemaPlanetario> camino = new List <SistemaPlanetario>(); nave = GameObject.FindGameObjectWithTag("Nave").GetComponent <NaveEspacial>(); double[] materiales = new double[4]; materiales[0] = nave.iridio; materiales[1] = nave.paladio; materiales[2] = nave.platino; materiales[3] = nave.elementoZero; if (nodoInicialTemporal != null) { buscarCamino(nodoInicialTemporal, 0, nebulosa.grafo, nave.combustible, camino, 0f, nave.sondas, materiales); } }
public static SistemaPlanetario PostSistema(SistemaPlanetario sistema) { var httpWebRequest = (HttpWebRequest)WebRequest.Create(ApiCalls.url + "/api/sistemaplanetario"); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = JsonUtility.ToJson(sistema); //json = json.Replace("\"id\":0,", ""); streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); sistema = JsonUtility.FromJson <SistemaPlanetario>(result); } return(sistema); }
private void buscarOrigen(SistemaPlanetario inicio, double relacionGanancia, List <AristaSistema> grafo, float gasolina, int sondas, float distancia, List <SistemaPlanetario> camino, double[] materiales) { inicio.visitado = true; // recargarGasolinaYsondas(inicio, ref gasolina, ref sondas, ref materiales); camino.Add(inicio); List <Planeta> planetasTemp = new List <Planeta>(); planetasTemp = clonarPlanetas(inicio.nodos); double[] materialesTemp = clonarMateriales(materiales); double rg = calcularRelacionGanancia(inicio, relacionGanancia, distancia, ref sondas, ref materiales); if (inicio.id != nodoInicial.id) { foreach (var item in buscarAdyacentes(inicio, grafo)) { if (!item.visitado) { float dis = ((new Vector3(inicio.x, inicio.y, inicio.z)) - (new Vector3(item.x, item.y, item.z))).magnitude; if (!caminoImposible(dis, gasolina)) { buscarOrigen(item, rg, grafo, gasolina - (dis / Constantes.GASTO_COMBUSTIBLE), sondas, dis, camino, materiales); } } } } else { double regTemp = rg; if (mejorCamino(ref regTemp, gasolina, sondas)) { clonarCamino(camino); relacionGananciaGlobal = regTemp; gasolinaGlobal = gasolina; } //Debug.Log(rg + " RGL"); //Debug.Log(regTemp + " RGG"); //Debug.Log(materiales[0] + "-" + materiales[1]); //Debug.Log(gasolina + " GASL"); //Debug.Log(sondas + " sondas"); //string salida = ""; //foreach (var item in camino) //{ // salida += item.nombre + "-"; //} //Debug.Log(salida); } devolverMateriales(inicio.nodos, planetasTemp, ref materiales); devolverMaterialesNave(ref materiales, materialesTemp); inicio.visitado = false; camino.Remove(inicio); }
private SistemaPlanetario crearsistemaPlanetario() { SistemaPlanetario sistema = new SistemaPlanetario(); sistema.nombre = ""; sistema.x = Random.Range(-800, 800); sistema.y = 0; sistema.z = Random.Range(-800, 800); sistema.nodos = new List <Planeta>(); return(sistema); }
/// <summary> /// Envía en mensaje DELETE al servidor con el id de la nebulosa a eliminar. /// </summary> /// <param name="nebulosa"></param> /// <returns></returns> public static IEnumerator deleteSistemaCOR(SistemaPlanetario sistema) { string accion = "Api/sistemaplanetario/" + sistema.id; UnityWebRequest wr = UnityWebRequest.Delete(ApiCalls.url + accion); yield return(wr.SendWebRequest()); if (wr.isNetworkError || wr.isHttpError) { Debug.Log("ERROR: " + wr.error); } }
public void recalcularAlgorimo(SistemaPlanetario nodoInicial) { List <SistemaPlanetario> camino = new List <SistemaPlanetario>(); nave = GameObject.FindGameObjectWithTag("Nave").GetComponent <NaveEspacial>(); double[] materiales = new double[4]; materiales[0] = nave.iridio; materiales[1] = nave.paladio; materiales[2] = nave.platino; materiales[3] = nave.elementoZero; if (nodoInicial != null) { buscarCamino(nodoInicial, 0, nebulosaG.grafo, nave.combustible, camino, 0f, nave.sondas, materiales); } }
public List <SistemaPlanetario> buscarAdyacentes(SistemaPlanetario sistema, List <AristaSistema> grafo) { List <SistemaPlanetario> adyacentes = new List <SistemaPlanetario>(); foreach (var item in grafo) { if (item.origen.id == sistema.id) { adyacentes.Add(item.destino); } if (item.destino.id == sistema.id) { adyacentes.Add(item.origen); } } return(adyacentes); }
/// <summary> /// Calcula la relacion ganancia real que se puede obtener con un numero de sondas determinado teniendo en cuenta la gasolina que gasta /// SE SIMULA QUE SE ESTAN RESTANDO MATERIALES /// </summary> /// <param name="sistema"></param> /// <returns></returns> public double calcularRelacionGanancia(SistemaPlanetario inicio, double relacionGanancia, float distancia, ref int sondas, ref double[] materiales) { double iridio = 0; double paladio = 0; double platino = 0; double elementoZero = 0; foreach (var item in inicio.recorrido.caminoGlobal) { if (sondas >= 2 && GastoSondas.valeLaPenaGastarSondas(item)) { iridio += item.iridio; paladio += item.paladio; platino += item.platino; elementoZero += item.elementoZero; //La nave quedo con los materiales del planeta materiales[0] += item.iridio; materiales[1] += item.paladio; materiales[2] += item.platino; materiales[3] += item.elementoZero; sondas -= 2; ///El plantera quedó sin materiales item.iridio = 0; item.paladio = 0; item.platino = 0; item.elementoZero = 0; ///Limita materiales materiales[0] = Mathf.Clamp((float)materiales[0], 0, Constantes.LIMITE_IRIDIO); materiales[1] = Mathf.Clamp((float)materiales[1], 0, Constantes.LIMITE_PALADIO); materiales[2] = Mathf.Clamp((float)materiales[2], 0, Constantes.LIMITE_PLATINO); materiales[3] = Mathf.Clamp((float)materiales[3], 0, Constantes.LIMITE_ELEMENTOZERO); } } iridio = (iridio * Constantes.IRIDIO_VALOR - (Constantes.IRIDIO_VC * Constantes.IRIDIO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE))); paladio = (paladio * Constantes.PALADIO_VALOR - (Constantes.PALADIO_VC * Constantes.PALADIO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE))); platino = (platino * Constantes.PLATINO_VALOR - (Constantes.PLATINO_VC * Constantes.PLATINO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE))); elementoZero = (elementoZero * Constantes.ELEMENTO_ZERO_VALOR - (Constantes.ELEMENTO_ZERO_VC * Constantes.ELEMENTO_ZERO_VALOR * (distancia / Constantes.GASTO_COMBUSTIBLE))); return((iridio + paladio + platino + elementoZero) + relacionGanancia); }
/// <summary> /// /// </summary> /// <param name="inicio"></param> /// <param name="relacionGanancia"></param> /// <param name="grafo"></param> /// <param name="gasolina">La gasolina que riene la nave al comenzar el método</param> /// <param name="camino"></param> /// <param name="distancia"></param> private void buscarCamino(SistemaPlanetario inicio, double relacionGanancia, List <AristaSistema> grafo, float gasolina, List <SistemaPlanetario> camino, float distancia, int sondas, double[] materiales) { inicio.visitado = true; RecargarCombustible rc = new RecargarCombustible(); List <Planeta> planetasTemp = new List <Planeta>(); planetasTemp = clonarPlanetas(inicio.nodos); double[] materialesTemp = clonarMateriales(materiales); double rg = relacionGanancia; rc.recargarGasolinaYsondas(inicio, ref gasolina, ref sondas, ref materiales, ref rg); camino.Add(inicio); //int sondasTemp = inicio.recorrido.sondasGlobal; rg = calcularRelacionGanancia(inicio, rg, distancia, ref sondas, ref materiales); foreach (var item in buscarAdyacentes(inicio, grafo)) { if (!item.visitado) { float dis = ((new Vector3(inicio.x, inicio.y, inicio.z)) - (new Vector3(item.x, item.y, item.z))).magnitude; if (!caminoImposible(dis, gasolina)) { buscarCamino(item, rg, grafo, gasolina - (dis / Constantes.GASTO_COMBUSTIBLE), camino, dis, sondas, materiales); } } } SistemaPlanetario inicioAux = inicio; List <AristaSistema> grafoDuplicado = clonarGrafo(grafo, ref inicioAux); inicio.visitado = false; camino.Remove(inicio); buscarOrigen(inicioAux, rg, grafoDuplicado, gasolina, sondas, 0, camino, materiales); devolverMateriales(inicio.nodos, planetasTemp, ref materiales); devolverMaterialesNave(ref materiales, materialesTemp); }
IEnumerator getSistemas() { string accion = "Api/SistemaPlanetario/" + sistemaPlanetario.id; UnityWebRequest wr = UnityWebRequest.Get(ApiCalls.url + accion); yield return(wr.SendWebRequest()); if (wr.isNetworkError || wr.isHttpError) { Debug.Log("ERROR: " + wr.error); } else { string json = wr.downloadHandler.text; SistemaPlanetario nebulosa = JsonUtility.FromJson <SistemaPlanetario>(json); TextMeshProUGUI nombre = infoSistema.transform.Find("Nombre").GetComponent <TextMeshProUGUI>(); nombre.text = nebulosa.nombre; } }
/// <summary> /// La nave recarga gasolina y compra sondas /// </summary> /// <param name="inicio"></param> public void recargarGasolinaYsondas(SistemaPlanetario inicio, ref float gasolina, ref int sondas, ref double[] materiales, ref double rg) { if (inicio.tieneDeposito) { float gasolinaPorcentaje = gasolina / Constantes.LIMITE_COMBUSTIBLE; float sondasPorcentaje = sondas / Constantes.CAPACIDAD_SONDAS; if (gasolinaPorcentaje < sondasPorcentaje) { while (((gasolinaPorcentaje < sondasPorcentaje) && puedeComprarCombustible(materiales)) && gasolinaPorcentaje * 100 < 99) { gasolina += comprarCombustible(ref materiales, ref rg); gasolinaPorcentaje = gasolina / Constantes.LIMITE_COMBUSTIBLE; } } if (sondasPorcentaje < gasolinaPorcentaje) { while (((sondasPorcentaje < gasolinaPorcentaje) && puedeComprarSondas(materiales)) && sondasPorcentaje * 100 < 99) { sondas += comprarSondas(ref materiales, ref rg); sondasPorcentaje = sondas / Constantes.CAPACIDAD_SONDAS; } } while ((puedeComprarCombustible(materiales) && gasolinaPorcentaje * 100 < 99) || (puedeComprarSondas(materiales) && sondasPorcentaje * 100 < 99)) { if (puedeComprarCombustible(materiales) && gasolinaPorcentaje * 100 < 99) { gasolina += comprarCombustible(ref materiales, ref rg); gasolinaPorcentaje = gasolina / Constantes.LIMITE_COMBUSTIBLE; } if (puedeComprarSondas(materiales) && sondasPorcentaje * 100 < 99) { sondas += comprarSondas(ref materiales, ref rg); sondasPorcentaje = sondas / Constantes.CAPACIDAD_SONDAS; } } } }
/// <summary> /// Esta corrutina envia esta atenta cuando se selecciona una nebulosa ,cuando lo hace la elimina llamando a la corrutina deleteNebulosa /// </summary> /// <returns></returns> IEnumerator eliminarSistemaCOR() { while (eliminar) { // This would cast rays only against colliders in layer 8. // But instead we want to collide against everything except layer 8. The ~ operator does this, it inverts a bitmask. if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Does the ray intersect any objects excluding the player layer if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerDelete)) { SistemaPlanetario sistema = hit.transform.gameObject.GetComponent <SistemaplanetarioPrefab>().sistemaPlanetario; StartCoroutine(deleteSistemaCOR(sistema)); Destroy(hit.transform.gameObject); } } yield return(null); } }
void Start() { SistemaPlanetario sp = SistemaPlanetarioService.GetSistemaPlanetario(123); foreach (var nodo in sp.nodos) { foreach (var item in sp.grafo) { if (item.origenFK == nodo.id) { item.origen = nodo; } if (item.destinoFK == nodo.id) { item.destino = nodo; } } } rp.buscarNodoInicial(sp.nodos, sp.grafo); }
/// <summary> /// este métoto duplica un grafo y desmarca los nodos como no visitados. /// </summary> /// <returns></returns> public List <AristaSistema> clonarGrafo(List <AristaSistema> grafo, ref SistemaPlanetario inicioAux) { List <AristaSistema> grafoCopia = new List <AristaSistema>(); List <SistemaPlanetario> sistemasAux = new List <SistemaPlanetario>(); foreach (var item in grafo) { AristaSistema arCopia = new AristaSistema(); bool origen = false; bool destino = false; foreach (var sistema in sistemasAux) { if (item.origen.id == sistema.id) { arCopia.origen = sistema; origen = true; } if (item.destino.id == sistema.id) { arCopia.destino = sistema; destino = true; } } if (!origen) { SistemaPlanetario orCopia = new SistemaPlanetario(); orCopia.tieneDeposito = item.origen.tieneDeposito; orCopia.recorrido = item.origen.recorrido; orCopia.nombre = item.origen.nombre; orCopia.x = item.origen.x; orCopia.y = item.origen.y; orCopia.z = item.origen.z; orCopia.id = item.origen.id; orCopia.nodos = item.origen.nodos; sistemasAux.Add(orCopia); arCopia.origen = orCopia; } if (!destino) { SistemaPlanetario desCopia = new SistemaPlanetario(); desCopia.tieneDeposito = item.destino.tieneDeposito; desCopia.recorrido = item.destino.recorrido; desCopia.nombre = item.destino.nombre; desCopia.x = item.destino.x; desCopia.y = item.destino.y; desCopia.z = item.destino.z; desCopia.id = item.destino.id; desCopia.nodos = item.destino.nodos; arCopia.destino = desCopia; } if (item.origen.id == inicioAux.id) { inicioAux = arCopia.origen; } if (item.destino.id == inicioAux.id) { inicioAux = arCopia.destino;; } grafoCopia.Add(arCopia); } return(grafoCopia); }
public void setSistema(SistemaPlanetario _sistema) { sistemaPlanetario = _sistema; }
public IEnumerator sistemaDeNavegacion(List <SistemaPlanetario> MejorCamino) { transform.position = new Vector3(MejorCamino[0].x, 0, MejorCamino[0].z); lineaPaso.SetPosition(0, new Vector3(MejorCamino[0].x, 0.1f, MejorCamino[0].z)); int i = 0; int contadorFinal = 0; //contador para saber si llego a Vector3 posInicial = new Vector3(MejorCamino[0].x, 0, MejorCamino[0].x); SistemaPlanetario sistemaInicial = MejorCamino[0]; foreach (var sistema in MejorCamino) { if (sistema == sistemaInicial && i != 0) { break; } float distancia = (posInicial - new Vector3(sistema.x, 0, sistema.z)).magnitude; posInicial = new Vector3(sistema.x, 0, sistema.z); if (combustible < (distancia / Constantes.GASTO_COMBUSTIBLE)) { gameOver = true; Debug.Log("Todo Esta Perdido"); Time.timeScale = 0; break; } contadorFinal++; lineaPaso.positionCount = i + 1; navegacionSistema(); GameObject circulo = new GameObject(); circulo.transform.position = new Vector3(sistema.x, 0, sistema.z); circulo.transform.localScale = new Vector3(20, 20, 20); GameObject sistemaTemp = new GameObject(); sistemaTemp.transform.parent = circulo.transform; sistemaTemp.transform.localPosition = new Vector3(0, -2, 0); sistemaTemp.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); Vector3 target = new Vector3(sistema.x, 0, sistema.z); float combustibleTemp = ((transform.position - target).magnitude) * Constantes.GASTO_COMBUSTIBLE; float combustubleRestante = combustible - ((transform.position - target).magnitude) * Constantes.GASTO_COMBUSTIBLE; float gastoGasolina = 0; int entra = 0; while ((transform.position - target).magnitude != 0) { lineaPaso.SetPosition(i, new Vector3(transform.position.x, 0.1f, transform.position.z)); if (entra <= 1) { entra++; gastoGasolina = combustibleTemp * Constantes.GASTO_COMBUSTIBLE - (((transform.position - target).magnitude) * Constantes.GASTO_COMBUSTIBLE); } combustible -= gastoGasolina; float step = velocidadSistemas * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, target, step); Vector3 targetDir = target - transform.position; Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0f); Debug.DrawRay(transform.position, newDir, Color.red); // Move our position a step closer to the target. transform.rotation = Quaternion.LookRotation(newDir); Vector3 posicion = transform.position + offsetSistema; Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, posicion, 0.1f); yield return(null); } i++;//esta es para las lineas combustible = combustubleRestante; #region RecargarCombustible ///Recarga combustible si es posible RecargarCombustible rc = new RecargarCombustible(); double[] materiales = new double[4]; materiales[0] = iridio; materiales[1] = paladio; materiales[2] = platino; materiales[3] = elementoZero; double rg = 0; rc.recargarGasolinaYsondas(sistema, ref combustible, ref sondas, ref materiales, ref rg); iridio = (float)materiales[0]; paladio = (float)materiales[1]; platino = (float)materiales[2]; elementoZero = (float)materiales[3]; #endregion RecargarCombustible GameObject planetaTemp = new GameObject(); planetaTemp.transform.parent = sistemaTemp.transform; if (sistema.recorrido.caminoGlobal.Count > 0) { planetaTemp.transform.localPosition = new Vector3(sistema.recorrido.caminoGlobal[0].x, 0, sistema.recorrido.caminoGlobal[0].z); transform.position = planetaTemp.transform.position; } foreach (var planeta in sistema.recorrido.caminoGlobal) { navegacionPlanetas(); planetaTemp.transform.localPosition = (new Vector3(planeta.x, 0, planeta.z)); target = planetaTemp.transform.position; Vector3 posicion = transform.position + offsetPlanetas; Camera.main.transform.position = posicion; while ((transform.position - target).magnitude >= 0.1f) { float step = velocidadplanetas * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, target, step); Vector3 targetDir = target - transform.position; Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0f); Debug.DrawRay(transform.position, newDir, Color.red); // Move our position a step closer to the target. transform.rotation = Quaternion.LookRotation(newDir); posicion = transform.position + offsetPlanetas; Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, posicion, 0.1f);; yield return(null); } #region EntrarAPlaneta Vector3 posiciont = new Vector3(-7, 0, 0); Vector3 rotacion = new Vector3(0, 90, 0); Vector3 escala = new Vector3(0.1f, 0.1f, 0.1f); transform.position += posiciont; transform.eulerAngles = rotacion; transform.localScale -= escala; Vector3 offsetExtraccion = new Vector3(5f, 19, 22); // Camera.main.transform.position -= offsetExtraccion; if (sondas >= 2 && GastoSondas.valeLaPenaGastarSondas(planeta)) { Vector3 Posfinal1 = Camera.main.transform.position - offsetExtraccion; while ((Posfinal1 - Camera.main.transform.position).magnitude != 0) { Camera.main.transform.position = Vector3.MoveTowards(Camera.main.transform.position, Posfinal1, 1f); yield return(null); } sondas -= 2; double iridioTemp = planeta.iridio / tiempoExtraccion; double paladioTemp = planeta.paladio / tiempoExtraccion; double platinoTemp = planeta.platino / tiempoExtraccion; double elementoZeroTemp = planeta.elementoZero / tiempoExtraccion; inPlaneta = true; int contador = 0; nombrePlanetaTemp = planeta.nombre; ///Extraer materiales while (contador < tiempoExtraccion) { if (escapar) { escapar = false; break; } contador++; iridio += (float)iridioTemp; paladio += (float)paladioTemp; platino += (float)platinoTemp; elementoZero += (float)elementoZeroTemp; planeta.iridio -= iridioTemp; planeta.paladio -= paladioTemp; planeta.platino -= platinoTemp; planeta.elementoZero -= elementoZeroTemp; iridioPlanetaTemp = (float)planeta.iridio; paladioPlanetaTemp = (float)planeta.paladio; platinoPlanetaTemp = (float)planeta.platino; elementoZeroPlanetaTemp = (float)planeta.elementoZero; iridioPlanetaTemp = Mathf.Clamp(iridioPlanetaTemp, 0, Mathf.Infinity); platinoPlanetaTemp = Mathf.Clamp(platinoPlanetaTemp, 0, Mathf.Infinity); paladioPlanetaTemp = Mathf.Clamp(paladioPlanetaTemp, 0, Mathf.Infinity); elementoZeroPlanetaTemp = Mathf.Clamp(elementoZeroPlanetaTemp, 0, Mathf.Infinity); yield return(new WaitForSeconds(1f)); } } inPlaneta = false; transform.position -= posiciont; transform.eulerAngles = Vector3.zero; transform.localScale += escala; Vector3 Posfinal = Camera.main.transform.position + offsetExtraccion; while ((Posfinal - Camera.main.transform.position).magnitude != 0) { Camera.main.transform.position = Vector3.MoveTowards(Camera.main.transform.position, Posfinal, 1f); yield return(null); } #endregion EntrarAPlaneta } } GameObject.FindGameObjectWithTag("Teletransportar").GetComponent <Teletransportar>().iniciarAnimacion(); yield return(new WaitForSeconds(2.1f)); LevelLoader levelLoader = GameObject.FindGameObjectWithTag("LevelLoader").GetComponent <LevelLoader>(); levelLoader.loadLevel("ViaLactea"); }
public void nuevaViaLactea() { //TMP_InputField totalNebulosas=canvasMenuCrear.transform.Find("Canvas/Nebulosas/Total").GetComponent<TMP_InputField>(); //TMP_InputField totalSistemasPlanetarios=canvasMenuCrear.transform.Find("Canvas/SistemasPlanetarios/Total").GetComponent<TMP_InputField>(); //TMP_InputField totalSistemasPlanetas= canvasMenuCrear.transform.Find("Canvas/Planetas/Total").GetComponent<TMP_InputField>(); Slider maxNebulosas = canvasMenuCrear.transform.Find("Canvas/Nebulosas/Slider").GetComponent <Slider>(); Slider maxSistemasPlanetarios = canvasMenuCrear.transform.Find("Canvas/SistemasPlanetarios/Slider").GetComponent <Slider>(); Slider maxPlanetas = canvasMenuCrear.transform.Find("Canvas/Planetas/Slider").GetComponent <Slider>(); Toggle random = canvasMenuCrear.transform.Find("Canvas/Info/Toggle").GetComponent <Toggle>(); TMP_InputField nombreViaLactea = canvasMenuCrear.transform.Find("Canvas/Info/Nombre").GetComponent <TMP_InputField>(); ViaLactea viaLactea = new ViaLactea(); viaLactea.nombre = nombreViaLactea.text; viaLactea.Nebulosas = new List <Nebulosa>(); if (random.isOn) { int nebulosas = Random.Range((int)maxNebulosas.minValue, (int)maxNebulosas.value); for (int i = 0; i < nebulosas; i++) { Nebulosa nebulosaTemp = crearNebulosa(); viaLactea.Nebulosas.Add(nebulosaTemp); int sistemas = Random.Range((int)maxSistemasPlanetarios.minValue, (int)maxSistemasPlanetarios.value); for (int j = 0; j < sistemas; j++) { SistemaPlanetario sistemaTemp = crearsistemaPlanetario(); viaLactea.Nebulosas[i].sistemasPlanetarios.Add(sistemaTemp); for (int k = 0; k < (int)maxPlanetas.value; k++) { Planeta planeta = crearPlaneta(); viaLactea.Nebulosas[i].sistemasPlanetarios[j].nodos.Add(planeta); } } } } else { for (int i = 0; i < (int)maxNebulosas.value; i++) { Nebulosa nebulosa = crearNebulosa(); viaLactea.Nebulosas.Add(nebulosa); for (int j = 0; j < (int)maxSistemasPlanetarios.value; j++) { SistemaPlanetario sistema = crearsistemaPlanetario(); viaLactea.Nebulosas[i].sistemasPlanetarios.Add(sistema); for (int k = 0; k < (int)maxPlanetas.value; k++) { Planeta planeta = crearPlaneta(); viaLactea.Nebulosas[i].sistemasPlanetarios[j].nodos.Add(planeta); } } } } viaLactea = ViaLacteaService.PostViaLactea(viaLactea); CargarViaLactea cargar = GameObject.FindGameObjectWithTag("ViaLactea").GetComponent <CargarViaLactea>(); cargar.setViaLactea(viaLactea); StartCoroutine(CameraAnimations.animacionSalirMenuCrear("Editor")); StartCoroutine(irAEditor()); }