예제 #1
0
    public Porta(string nome,int offset, TipoDePorta tipo, WNode nodoPai)
    {

        Nome = nome;
        yOffset = offset;
        tipoDaPorta = tipo;
        nodoDono = nodoPai;
        cor = Color.white;
        switch(offset)
        {
            case 0: cor = Color.green; break;
            case 1: cor = Color.blue; break;
            case 2: cor = Color.red; break;
            case 3: cor = Color.yellow; break;
            case 4: cor = Color.black; break;
            case 5: cor = Color.cyan; break;
            default:
                
                Debug.LogError("erro cor da porta não suportada");
                break;
        }
        //guiskin = Resources.Load<GUISkin>("GUISkinNode");
        //   textura = Resources.Load<Texture2D>("CirculoBranco");
        textura = (Texture2D)Object.Instantiate(Resources.Load<Texture2D>("CirculoBranco"));
        Color[] colors = textura.GetPixels();
        for (int i = 0; i < colors.Length; i++)
        {
            if (colors[i].a != 0)
                colors[i] = cor;
        }
        textura.SetPixels(colors);
        textura.Apply();

    }
 void UpdateNodes(WNode w)
 {
     MoveWNode(w);
     foreach (Transform child in w.transform)
     {
         WNode wn = child.GetComponent <WNode>();
         if (wn != null)
         {
             UpdateNodes(wn);
         }
     }
 }
 private void SaveOriginalNodeStates(WNode wn)
 {
     wn.SetOriginalUpVector();
     foreach (Transform t in wn.transform)
     {
         WNode child = t.GetComponent <WNode>();
         if (child != null)
         {
             SaveOriginalNodeStates(child);
         }
     }
 }
 private void ResetNodes(WNode wn)
 {
     wn.transform.up = wn.GetOriginalupVector();
     foreach (Transform t in wn.transform)
     {
         WNode child = t.GetComponent <WNode>();
         if (child != null)
         {
             ResetNodes(child);
         }
     }
 }
 void CriarNode()
 {
     WNode novoNode = new WNode("Node", livreID());
     
    
     if (listaDeWNodes.Count > 0)
     {
         novoNode._posicao.x = Event.current.mousePosition.x;
         novoNode._posicao.y = Event.current.mousePosition.y;
         novoNode._tamanho.x = listaDeWNodes[0]._tamanho.x;
         novoNode._tamanho.y = listaDeWNodes[0]._tamanho.y;
     }
     listaDeWNodes.Add(novoNode);
 }
 void MoveWNode(WNode W)
 {
     // Can simplify this if-else
     if (W.forward && W.currentR < W.MAX_R)
     {
         W.ApplyWindMovementVector(WindVector);
     }
     else if (W.forward && W.currentR >= W.MAX_R)
     {
         W.forward = false;
     }
     else if (!W.forward && W.currentR > W.MIN_R)
     {
         W.ApplyWindMovementVector(WindVector);
     }
     else if (!W.forward && W.currentR <= W.MIN_R)
     {
         W.forward = true;
     }
 }
 public int JaExisteEsseLink(WNode nodo )
 {
     //acha o link que tem esse nodo e retorna o indice do link
     for (int l = 0; l < listaDeLinks.Count; l++)
     {
         if (listaDeLinks[l].portas[0].nodoDono.Id == nodo.Id)
         {
             return l;
         }
         if (listaDeLinks[l].portas[1].nodoDono.Id == nodo.Id)
         {
             
             return l;
         }
     }
     return -1;
 }
    void CriarNode(float x, float y)
    {
        WNode novoNode = new WNode("Node", livreID());


        if (listaDeWNodes.Count > 0)
        {
            novoNode._posicao.x = x;
            novoNode._posicao.y = y;
            novoNode._tamanho.x = listaDeWNodes[0]._tamanho.x;
            novoNode._tamanho.y = listaDeWNodes[0]._tamanho.y;
        }
        listaDeWNodes.Add(novoNode);
    }
 public void Conectar(WNode nodo1, WNode nodo2)
 {
     Porta portalivre1 = nodo1.PortaSaidaLivre();
     Porta portalivre2 = nodo2.PortaEntradaLivre();
     if(portalivre1==null)
     {
       nodo1.AdicionarPortas();
       portalivre1 = nodo1.PortaSaidaLivre();
     }
     if (portalivre2 == null)
     {
         nodo2.AdicionarPortas();
         portalivre2 = nodo2.PortaSaidaLivre();
     }
     Conectar(portalivre1, portalivre2);
 }
예제 #10
0
    //usado na função importarxml2
    void TraverseNode2(ref WNode nodo, XmlNode XmlNode, int indentacao)
    {

        //processa nodo
        List<Propriedade> listaP = new List<Propriedade>();
        //lista de propriedade do node
        for (int i = 0; i < XmlNode.Attributes.Count; i++)
        {
            listaP.Add(new Propriedade(XmlNode.Attributes[i].Name, 0, XmlNode.Attributes[i].Value));
        }
        //tentando criar uma estrutura pra arvore :S
        WNode novoNodo = CriarNode(nodo._posicao.x + nodo._tamanho.x + 100, nodo._posicao.y + nodo._tamanho.y/2 + indentacao * (nodo._tamanho.y+20), 100, 100, ref listaP);
        Conectar(nodo, novoNodo);
        int numFilhos=XmlNode.ChildNodes.Count;
        indentacao ++;
        foreach (XmlNode nodoxml in XmlNode.ChildNodes)
        {         
            TraverseNode2(ref novoNodo, nodoxml,indentacao);
            indentacao += numFilhos/2;
        }


      
    }
예제 #11
0
 //usado na função exportarxml2
 void TraverseNode(ref WNode nodo, ref XmlElement nodoXML,ref  XmlDocument xml)
 {
     //processa nodo
     XmlElement novoNodoXML = xml.CreateElement(nodo.Nome);
     //pra cada propriedade adiciona um atributo ao nodo
 //    novoNodoXML.SetAttribute("porta",nodo);
     Debug.Log(" numero de propriedades desse nó =" + nodo.listaDePropriedades.Count);
     for (int j = 0; j < nodo.listaDePropriedades.Count; j++)
     {
       
         novoNodoXML.SetAttribute( nodo.listaDePropriedades[j].Nome , nodo.listaDePropriedades[j].texto);
     }
     nodoXML.AppendChild(novoNodoXML);
    // Debug.Log("nodo processado!");
     //pra cada porta...
     for(int i=0; i<nodo.listaDePortas.Count ;i++)
     {
       if(nodo.listaDePortas[i].tipoDaPorta==TipoDePorta.SAIDA)
           //pega o nodo pai no final desse link
           //e propaga
           if(nodo.listaDePortas[i].Link!=null)
          TraverseNode(ref nodo.listaDePortas[i].Link.portaEntrada().nodoDono, ref  novoNodoXML, ref  xml);
  
     }
    
 }
예제 #12
0
    void  SelecionarNode(int i)
    {
        if( listaDeWNodes[i].MouseDown(Event.current.mousePosition)==true)
        {
            //aqui seria pro mouse perder o ultimo foco
           
            nodoSelecionadoAtualmente = listaDeWNodes[i];
           
        }

    }
예제 #13
0
    WNode CriarNode(float x, float y, float largura,float altura,ref List<Propriedade> lista)
    {

        WNode novoNode = new WNode("nodo", livreID(),x,y,largura,altura);
        novoNode.listaDePropriedades = lista;

        listaDeWNodes.Add(novoNode);
        return novoNode;
    }