示例#1
0
    //--------------------------------------------------------------------//

    bool VerificarCostado(Lado lado)
    {
        switch (lado)
        {
        case Lado.Der:
            if (Physics.Raycast(transform.position, transform.right, out RH, AlcanceVerif))
            {
                if (RH.transform.tag == TagTerreno)
                {
                    return(false);
                }
            }
            break;

        case Lado.Izq:
            if (Physics.Raycast(transform.position, transform.right * (-1), out RH, AlcanceVerif))
            {
                if (RH.transform.tag == TagTerreno)
                {
                    return(false);
                }
            }
            break;
        }

        return(true);
    }
示例#2
0
        private int ObterPonta(Lado lado)
        {
            if (_pedrasJogadas.Count == 0)
            {
                return(-1);
            }

            if (_pedrasJogadas.Count == 1)
            {
                var pedra = _pedrasJogadas.First.Value;

                // Sempre devolve o maior lado como sendo a ponta da esquerda
                // para iniciar o jogo.
                // 'Pedra' é definido para ter sempre o Lado2 >= Lado1

                return(lado == Lado.Esquerdo ? pedra.Lado2 : pedra.Lado1);
            }

            int ponta;

            if (lado == Lado.Esquerdo)
            {
                var pedraPonta = _pedrasJogadas.First.Value;
                ponta = pedraPonta.PontaLivre(_pedrasJogadas.First.Next?.Value);
            }
            else
            {
                var pedraPonta = _pedrasJogadas.Last.Value;
                ponta = pedraPonta.PontaLivre(_pedrasJogadas.Last.Previous?.Value);
            }

            return(ponta);
        }
示例#3
0
    //---------//

    public void SetLado(Lado lado)
    {
        LadoAct = lado;

        Rect r = new Rect();

        r.width  = CamConduccion.rect.width;
        r.height = CamConduccion.rect.height;
        r.y      = CamConduccion.rect.y;

        switch (lado)
        {
        case Lado.Der:
            r.x = 0.5f;
            break;


        case Lado.Izq:
            r.x = 0;
            break;
        }

        CamCalibracion.rect = r;
        CamConduccion.rect  = r;
        CamDescarga.rect    = r;

        if (LadoAct == Visualizacion.Lado.Izq)
        {
            Techo.GetComponent <Renderer>().material.mainTexture = TextNum1;
        }
        else
        {
            Techo.GetComponent <Renderer>().material.mainTexture = TextNum2;
        }
    }
 private void Busqueda_SaveEvent(Lado respuesta)
 {
     foreach (Lado lado in TSSalesApp.AutomaticContext.Productos)
     {
         if (lado.Cara.Equals(respuesta.Cara))
         {
             lado.Codigo             = respuesta.Codigo;
             lado.Ruc                = respuesta.Ruc;
             lado.RazonSocial        = respuesta.RazonSocial;
             lado.Correo             = respuesta.Correo;
             lado.Direccion          = respuesta.Direccion;
             lado.Placa              = respuesta.Placa;
             lado.Odometro           = respuesta.Odometro;
             lado.Chofer             = respuesta.Chofer;
             lado.Tarjeta_afiliacion = respuesta.Tarjeta_afiliacion;
             lado.Pago               = respuesta.Pago;
             lado.Pagos              = respuesta.Pagos;
             lado.Telefono           = respuesta.Telefono;
             lado.Tarjeta            = "";
             lado.Marca              = respuesta.Marca;
             lado.Modelo             = respuesta.Modelo;
             lado.Fecha_Nacimiento   = respuesta.Fecha_Nacimiento;
             lado.Documento          = respuesta.Documento;
         }
     }
 }
示例#5
0
        public void Subtrair(Lado ladoParaAplicar, TermoEquacao termo)
        {
            var listaTermos = ObterTermosDoLado(ladoParaAplicar);

            calculadora.Subtrair(termo, listaTermos);

            historicoOperacoes.RegistrarOperacao(new Subtracao(termo), ladoParaAplicar);
        }
示例#6
0
        public void Dividir(Lado ladoParaAplicar, TermoEquacao divisor)
        {
            var listaTermos = ObterTermosDoLado(ladoParaAplicar);

            calculadora.Dividir(divisor, listaTermos);

            historicoOperacoes.RegistrarOperacao(new Divisao(divisor), ladoParaAplicar);
        }
示例#7
0
        public void Multiplicar(Lado ladoParaAplicar, TermoEquacao multiplicador)
        {
            var listaTermos = ObterTermosDoLado(ladoParaAplicar);

            calculadora.Multiplicar(multiplicador, listaTermos);

            historicoOperacoes.RegistrarOperacao(new Multiplicacao(multiplicador), ladoParaAplicar);
        }
示例#8
0
        private void DeveTerRegistradoUmaOperacaoDe(TipoOperacao tipoEsperado, Lado lado, Equacao equacao, TermoEquacao termo, int noIndice)
        {
            var operacoes = equacao.HistoricoOperacoes.ObterOperacoes(lado);
            var operacao  = operacoes[noIndice];

            operacao.Tipo.Should().Be(tipoEsperado);
            operacao.Termo.Should().Be(termo);
        }
示例#9
0
 public IOperacao[] ObterOperacoes(Lado ladoEquacao)
 {
     return(operacoes
            .ToArray()
            .Where(o => o.Lado == Lado.Esquerdo)
            .Cast <IOperacao>()
            .Reverse()
            .ToArray());
 }
示例#10
0
        private void MovimentarPulso(Lado lado)
        {
            var MovimentoRepository = Kernel.Get <MovimentoRepository>();
            var movimento           = MovimentoRepository.FindFirst();
            var pulso = (movimento.Bracos.Find(u => u.Lado.Equals(lado)));

            Assert.IsNotNull(pulso);
            Assert.IsNotNull(pulso.Cotovelo);
            pulso.Pulso.IsValid(PulsoStatus.MINUS_45, CotoveloStatus.FORTEMENTE_CONTRAIDO);
        }
示例#11
0
    public void agregarArco(int vi, int vf)
    {
        matrizAdyacencia[vi, vf] = 1;
        Vertice v1             = nodos[vi];
        Vertice v2             = nodos[vf];
        float   costoNuevoLado = distanciaEuclidiana(v1, v2);
        //Debug.Log(costoNuevoLado);
        Lado l = new Lado(v1, v2, costoNuevoLado);

        lados.Add(l);
    }
示例#12
0
 public void Adicionar(string valorString, Lado lado)
 {
     if (lado == Lado.Esquerdo)
     {
         unidadesEsquerda.AddRange(extratorUnidades.Extrair(valorString));
         incognitasEsquerda.AddRange(extratorIncognitas.Extrair(valorString));
     }
     else
     {
         unidadesDireita.AddRange(extratorUnidades.Extrair(valorString));
         incognitasDireita.AddRange(extratorIncognitas.Extrair(valorString));
     }
 }
示例#13
0
        public void Play()
        {
            _socket.On("connect", () =>
            {
                //WriteLog("connect: Recibido evento connect desde el server");
                var login = new { name = _user, password = _pass };
                _socket.Emit("login", login);
            });

            _socket.On("server_message", (data) =>
            {
                var dataStr = data as string;
                //WriteLog($"server_message: {data}");

                if (dataStr.IndexOf("Logged in as") == 0)
                {
                    var join = new { name = _sala, password = _passSala };
                    _socket.Emit("join_room", join);
                }
            });

            _socket.On("server_state", (msg) =>
            {
                var json = JsonConvert.SerializeObject(msg);

                _serverState = JsonConvert.DeserializeObject <ServerState>(json);
                //WriteLog($"server_state: {msg}");
                if (jugandoComo == Lado.derecho)
                {
                    PlayAsPlayer1(_serverState);
                }
                else
                {
                    PlayAsPlayer2(_serverState);
                }
            });

            _socket.On("match_start", (msg) =>
            {
                var json = JsonConvert.SerializeObject(msg);
                //WriteLog($"match_start: {msg}");
                _matchData  = JsonConvert.DeserializeObject <MatchData>(json);
                jugandoComo = (Lado)(_matchData?.role);
            });

            _socket.On("connect_error", (exception) =>
            {
                var ex = exception as Exception;
                //WriteLog($"Error: {ex?.InnerException?.Message}");
            });
        }
        public SearchCustomerAutomatic()
        {
            contexto       = new BindingProgressCustomers();
            this.Lado      = new Lado();
            this.Lado.Pago = "EFECTIVO";
            this.Lado.Pagos.Clear();
            this.Lado.Pagos.Add(new Pago()
            {
                Codigo = "00001"
            });
            this.BindingContext = contexto;

            TSCustomerApp.vCodigoBloqueado    = new List <string>();
            TSCustomerApp.vTarjetasBuscadas   = new List <string>();
            TSCustomerApp.vTarjetasBloqueadas = new List <string>();

            InitializeComponent();
        }
示例#15
0
    public Lado getLado(int vi, int vf)
    {
        Vertice v1 = nodos[vi];
        Vertice v2 = nodos[vf];
        Lado    l  = new Lado(v1, v2, 0f);

        for (int k = 0; k < lados.Count; k++)
        {
            if (lados[k].getInicial().getNum() == v1.getNum() && lados[k].getFinal().getNum() == v2.getNum())
            {
                l = lados[k];
                //Debug.Log("Lado: " + l.getInicial().getNum() + "-" + l.getFinal().getNum());
                break;
            }
        }

        return(l);
    }
示例#16
0
    //---------//

    public void SetLado(Lado lado)
    {
        LadoAct = lado;

        Rect r = new Rect();

        if (GameOptionsManager.instance.gameMode == GameOptionsManager.GameMode.Singleplayer)
        {
            r.Set(0f, 0f, 1f, 1f);
        }
        else
        {
            r.width  = CamConduccion.rect.width;
            r.height = CamConduccion.rect.height;
            r.y      = CamConduccion.rect.y;

            switch (lado)
            {
            case Lado.Der:
                r.x = 0.5f;
                break;


            case Lado.Izq:
                r.x = 0;
                break;
            }
        }

        CamTutorial.rect   = r;
        CamConduccion.rect = r;
        CamDescarga.rect   = r;

        if (LadoAct == Lado.Izq)
        {
            Techo.GetComponent <Renderer>().material.mainTexture = TextNum1;
        }
        else
        {
            Techo.GetComponent <Renderer>().material.mainTexture = TextNum2;
        }
    }
示例#17
0
        public void AplicarOperacao(Lado ladoParaAplicar, Operacao operacao)
        {
            switch (operacao.Tipo)
            {
            case TipoOperacao.Adicao:
                Somar(ladoParaAplicar, operacao.Termo);
                break;

            case TipoOperacao.Subtracao:
                Subtrair(ladoParaAplicar, operacao.Termo);
                break;

            case TipoOperacao.Multiplicacao:
                Multiplicar(ladoParaAplicar, operacao.Termo);
                break;

            case TipoOperacao.Divisao:
                Dividir(ladoParaAplicar, operacao.Termo);
                break;
            }
        }
示例#18
0
        private void DosPorLosOponentes_1PorElBalon(ServerState serverState, Lado lado)
        {
            if (_matchData != null)
            {
                var mitalDelCampo = (_matchData.playground_info.field_corners.top_right_x -
                                     _matchData.playground_info.field_corners.top_left_x) / 2;

                Team[] miEquipo;
                Team[] otroEquipo;
                if (lado == Lado.izquierdo)
                {
                    miEquipo   = serverState.Team_2;
                    otroEquipo = serverState.Team_1;
                }
                else
                {
                    miEquipo   = serverState.Team_1;
                    otroEquipo = serverState.Team_2;
                }

                if (serverState.Match_event == "Kickoff")
                {
                    Thread.Sleep(1000);
                }
                if (lado == Lado.izquierdo)
                {
                    MueveCap(0, serverState, miEquipo, mitalDelCampo, 1.75, 1.15, otroEquipo);
                    MueveCap(1, serverState, miEquipo, mitalDelCampo, 2.75, 1.15, otroEquipo);
                    MueveCap(2, serverState, miEquipo, mitalDelCampo, 3.75, 1.15, otroEquipo);
                }
                else
                {
                    MueveCap(0, serverState, miEquipo, mitalDelCampo, 1.75, 1.15, otroEquipo);
                    MueveCap(1, serverState, miEquipo, mitalDelCampo, 2.75, 1.15, otroEquipo);
                    MueveCap(2, serverState, miEquipo, mitalDelCampo, 3.75, 1.15, otroEquipo);
                }
            }
        }
示例#19
0
        public async void Start_Automatic()
        {
            Contexto.Mensaje = "Estamos procesando las ventas pendientes espere por favor.";

            foreach (TS_BECara cara in TSSalesApp.vCaras)
            {
                string TipoDocumento = (TSSalesApp.vParemetros.cdtipodocautomatico ?? "").Trim().Equals("99999") ? "99999" : "00003";
                bool   NoImprimir    = Config.Services.PrintAvaliable;

                Lado lado = new Lado();
                lado.Cara               = (cara.cara ?? "").Trim();
                lado.Codigo             = (TSSalesApp.vParemetros.cdclienteautomatico ?? "").Trim();
                lado.Ruc                = "";
                lado.RazonSocial        = (TSSalesApp.vParemetros.rscliente_automatico ?? "").Trim();
                lado.Correo             = "";
                lado.Direccion          = "";
                lado.Placa              = "";
                lado.Odometro           = "";
                lado.Chofer             = "";
                lado.Tarjeta_afiliacion = "";
                lado.Pago               = "";
                lado.Tarjeta            = TipoDocumento.Equals("99999") ? (TSSalesApp.vParemetros.prefcredlocal ?? "").Trim() + (TSSalesApp.vParemetros.cdclienteautomatico ?? "").Trim() : "";
                lado.Fecha_Nacimiento   = null;
                lado.Telefono           = "";
                lado.Marca              = "";
                lado.Modelo             = "";
                lado.Mensaje            = "";
                lado.Pago               = "EFECTIVO";
                lado.Pagos.Clear();
                lado.IsImprimir = NoImprimir;
                lado.Documento  = TipoDocumento.Equals("99999") ? TerminalSIGES.Models.EDocumento.NotaDespacho : TerminalSIGES.Models.EDocumento.BoletaFactura;

                await Start_Automatic(lado);
            }
            App.Current.MainPage = new NavigationPage(new SemiAutomatic());
        }
示例#20
0
        /// <summary>
        /// Executa uma jogada, adicionando a pedra na mesa em alguma ponta
        /// </summary>
        /// <param name="pedra">Qual é a pedra</param>
        /// <param name="lado">Em qual ponta a pedra será jogada</param>
        public void Jogar(Pedra pedra, Lado lado)
        {
            if (_pedrasJogadas.Count == 0)
            {
                _pedrasJogadas.AddFirst(pedra);
                return;
            }

            var ponta = ObterPonta(lado);

            if (!pedra.PodeJogar(ponta))
            {
                throw new InvalidOperationException($"Não pode jogar a pedra {pedra} numa ponta {ponta}, lado {lado}");
            }

            if (lado == Lado.Esquerdo)
            {
                _pedrasJogadas.AddFirst(pedra);
            }
            else
            {
                _pedrasJogadas.AddLast(pedra);
            }
        }
示例#21
0
        public static void RealizarOperacao(this Equacao equacao, TipoOperacao tipoOperacao, TermoEquacao termo, Lado lado)
        {
            switch (tipoOperacao)
            {
            case TipoOperacao.Adicao:
                equacao.Somar(lado, termo);
                break;

            case TipoOperacao.Subtracao:
                equacao.Subtrair(lado, termo);
                break;

            case TipoOperacao.Multiplicacao:
                equacao.Multiplicar(lado, termo);
                break;

            case TipoOperacao.Divisao:
                equacao.Dividir(lado, termo);
                break;

            default: throw new Exception(string.Format("Operação não suportada: {0}", tipoOperacao));
            }
        }
示例#22
0
 public OperacaoEfetuada(Operacao operacao, Lado lado)
 {
     Operacao = operacao;
     Lado     = lado;
 }
示例#23
0
 /// <summary>
 /// Começa cutscene de encerramento
 /// </summary>
 public void MatchEnd(Lado winner)
 {
     winnerSide = winner;
     GetComponent <CutsceneFinal>().enabled = true;
 }
        private void AplicarOperacaoEReavaliarObjetivo(OperacaoArrastavel operacaoArrastavel, Lado lado, Equacao equacaoAtual)
        {
            var termo    = ObterTermo(operacaoArrastavel.TipoTermo, operacaoArrastavel.Valor);
            var operacao = new Operacao(operacaoArrastavel.TipoOperacao, termo);

            equacaoAtual.AplicarOperacao(lado, operacao);

            AtualizarEquilibrioBalanca(equacaoAtual);
            AtualizarRepresentacaoBalanca(equacaoAtual);
            AtualizarHistoricoOperacoes(equacaoAtual);

            if (equacaoAtual.FoiResolvida())
            {
                this.ObterViewModel().AvancarParaMontagemDeUmaNovaEquacao();
                //Dispatcher.BeginInvoke(new Action(delegate
                //{
                //    this.ObterViewModel().AvancarParaMontagemDeUmaNovaEquacao();
                //}), DispatcherPriority.Send, TimeSpan.FromMilliseconds(2000));
            }
        }
示例#25
0
        public async Task Start_Automatic(Lado Lado)
        {
            /** COMIENZA REVISION DE VENTAS PENDIENTES **/
            await Task.Run(() =>
            {
                if (Convert.ToBoolean(TSSalesApp.vTerminal.conexion_dispensador ?? 0) == false || Convert.ToBoolean(TSSalesApp.vParemetros.conexiondispensador ?? false) == false)
                {
                    Contexto.Progreso = "CONEXION A DISPENSADOR CERRADA";
                    return;
                }

                string codigo = "XXXXXXXXXXX";

                TS_BECabeceraOutPut vTransaccion = TSSalesApp.SynchronizedGetOPTransaction(Lado.Cara, codigo, false);
                if (vTransaccion.Ok)
                {
                    if (vTransaccion.cDetalleOutPut.Length > 0)
                    {
                        List <TS_BEArticulo> Lista = new List <TS_BEArticulo>(vTransaccion.cDetalleOutPut);
                        if (IsButtonAutomatic == false)
                        {
                            Lista.RemoveAt(Lista.Count - 1);
                        }
                        int Progreso = 0;

                        foreach (TS_BEArticulo Producto in Lista)
                        {
                            Contexto.Mensaje  = "ENVIANDO VENTA";
                            Contexto.Progreso = "PROCESANDO CARA: " + Lado.Cara + "\nPROCESADO " + Progreso + " de " + Lista.Count;
                            var Venta         = new TS_BEArticulo()
                            {
                                item              = Producto.item,
                                dsarticulo        = (Producto.dsarticulo1 ?? "").Trim(),
                                precio            = Producto.precio,
                                cantidad          = Producto.cantidad,
                                cdarticulo        = Producto.cdarticulo,
                                cara              = Producto.cara,
                                hora              = Producto.hora,
                                subtotal          = Producto.subtotal,
                                tipo              = Producto.tipo,
                                mtoimpuesto       = Producto.mtoimpuesto,
                                total             = Producto.total,
                                nrogasboy         = Producto.nrogasboy.Trim(),
                                cdarticulosunat   = Producto.cdarticulosunat,
                                mtodscto          = Producto.mtodscto,
                                cdunimed          = Producto.cdunimed,
                                precio_orig       = Producto.precio_orig,
                                redondea_indecopi = Producto.redondea_indecopi,
                                tpformula         = Producto.tpformula,
                                impuesto          = Producto.impuesto,
                                moverstock        = Producto.moverstock,
                                costo             = Producto.costo,
                                trfgratuita       = Producto.trfgratuita,
                                total_display     = Producto.total_display,
                                impuesto_plastico = Producto.impuesto_plastico,
                                valorconversion   = Producto.valorconversion,
                                cdmedequiv        = Producto.cdmedequiv,
                                tpconversion      = Producto.tpconversion
                            };
                            TS_BEMensaje respuesta = TSSalesApp.SynchronizedSetSale(Lado, Venta);
                            if (respuesta.Ok)
                            {
                                try
                                {
                                    string[] mensaje     = respuesta.mensaje.Split('|');
                                    BindingDocument Item = new BindingDocument()
                                    {
                                        Documento = mensaje[0], Estado = mensaje[1], Respuesta = mensaje[2]
                                    };
                                    Device.BeginInvokeOnMainThread(() => { Contexto.Documentos.Add(Item); });
                                }
                                catch (Exception ex)
                                {
                                }
                            }
                            Progreso++;
                        }
                    }
                }
                else
                {
                    /**
                     * 1 ERROR GENERAL
                     * 2 ERROR DESCUENTOS
                     * 3 ERROR TABLAS DBF
                     * 4 SIN TRANSACCIONES
                     * 5 SIN CONEXION DISPENSADO
                     * 6 TERMINAL SIN CONEXION DISPENSADOR
                     **/
                    if (vTransaccion.Estado == 4)
                    {
                        Contexto.Progreso = "SIN TRANSACCIONES";
                        return;
                    }
                }
            });
        }
示例#26
0
 public DeleteEvent(Lado itemModelToDelete)
 {
     this.itemModelToDelete = itemModelToDelete;
 }
示例#27
0
 private List <TermoEquacao> ObterTermosDoLado(Lado lado)
 {
     return(lado == Lado.Direito ? termosDireita : termosEsquerda);
 }
示例#28
0
 public void RegistrarOperacao(Operacao operacao, Lado lado)
 {
     operacoes.Push(new OperacaoEfetuada(operacao, lado));
 }
示例#29
0
        private void AdicionarPesoEReavaliarObjetivo(TrianguloArrastavel trianguloArrastavel, Lado lado, EquacaoEmConstrucao equacaoEmConstrucao)
        {
            //equacaoEmConstrucao.Adicionar(trianguloArrastavel.Texto, lado);
            AtualizarEquilibrioBalanca(equacaoEmConstrucao);
            AtualizarRepresentacaoBalanca(equacaoEmConstrucao);

            var equacaoAtual = ControladorJogo.ObterEquacaoAtual().EquacaoProcessada;

            if (equacaoEmConstrucao.EhQuivalente(equacaoAtual))
            {
                this.ObterViewModel().AvancarParaEtapaDeResolucao();
                //Dispatcher.BeginInvoke(new Action(delegate
                //{
                //    this.ObterViewModel().AvancarParaEtapaDeResolucao();
                //}), DispatcherPriority.Send, TimeSpan.FromMilliseconds(2000));
            }
        }
示例#30
0
    public Path hacerAEstrella(Grafo g, Vertice vi, Vertice vf)
    {
        vi.setCosto(0f);
        vi.setEstimado(distanciaEuclidiana(vi, vf));

        Path      path     = new Path();
        Hashtable abiertos = new Hashtable();

        abiertos.Add(vi.getNum(), vi.getEstimado());
        Hashtable cerrados = new Hashtable();

        int[] preds = new int[g.n];

        Vertice current = new Vertice(0, Vector3.zero, new Vector3[3]);

        while (abiertos.Count > 0)
        {
            current = extraerMin(abiertos, g);

            //Debug.Log("Current: " + current.getNum());

            if (current == vf)
            {
                break;
            }

            abiertos.Remove(current.getNum());
            cerrados.Add(current.getNum(), current.getEstimado());

            List <Lado> conexiones = new List <Lado>();
            for (int i = 0; i < g.n; i++)
            {
                //Debug.Log("Prueba: " + current.getNum() + "-" + i);
                if (g.matrizAdyacencia[current.getNum(), i] == 1)
                {
                    //Debug.Log("Entre: " + current.getNum() + "-" + i);
                    Lado l = g.getLado(current.getNum(), i);
                    //Debug.Log("Conexion: " + l.getInicial().getNum() + "-" + l.getFinal().getNum());
                    conexiones.Add(l);
                }
            }

            foreach (Lado l in conexiones)
            {
                Vertice nodoFinal = l.getFinal();
                //Debug.Log("Lado actual: " + l.getInicial().getNum() + "-" + l.getFinal().getNum());

                if (cerrados.ContainsKey(nodoFinal.getNum()))
                {
                    continue;
                }

                float nodoFinalCostoTemt = g.nodos[current.getNum()].getCosto() + l.getCosto();


                if (!abiertos.ContainsKey(nodoFinal.getNum()))
                {
                    abiertos.Add(nodoFinal.getNum(), nodoFinal.getEstimado());
                }
                else if (nodoFinalCostoTemt >= nodoFinal.getCosto())
                {
                    continue;
                }
                preds[nodoFinal.getNum()] = l.getInicial().getNum();
                nodoFinal.setCosto(nodoFinalCostoTemt);
                nodoFinal.setEstimado(nodoFinal.getCosto() + distanciaEuclidiana(nodoFinal, vf));
            }
        }

        if (current != vf)
        {
            Debug.Log("No hay camino");
        }
        else
        {
            List <int> pathNum     = new List <int>();
            int        currentNode = current.getNum();
            pathNum.Add(currentNode);
            path.addNode(current.getPos());
            Instantiate(camino, current.getPos() + new Vector3(0, 0.5f, 0), Quaternion.identity);
            while (currentNode != vi.getNum())
            {
                pathNum.Add(preds[currentNode]);
                path.addNode(g.nodos[preds[currentNode]].getPos());
                Instantiate(camino, g.nodos[preds[currentNode]].getPos() + new Vector3(0, 0.5f, 0), Quaternion.identity);
                currentNode = preds[currentNode];
            }
            pathNum.Reverse();
            path.nodes.Reverse();
        }

        return(path);
    }