void TraverseNodeImportar( NodoUI nodo, XmlNode XmlNode) { //essa função tem um erro, por algum motivo um nodo adiciona dois links ao importar arvores maiores que 4 //tentando criar uma estrutura pra arvore :S NodoUI novoNodo = AdicionarNodo(); novoNodo.AdicionarPorta(); if (nodo != null) { AdicionarLink(nodo.PortaSaida(), novoNodo.PortaEntrada()); } else Debug.Log("nodo null"); novoNodo.name = "Nodo" + novoNodo.id.ToString(); novoNodo.nome = XmlNode.Attributes["Nome"].Value; // Debug.Log("adicionando nodo" + novoNodo.nome); novoNodo.IniciarNome(); for (int i = 0; i < XmlNode.ChildNodes.Count; i++) { XmlNode ChildXml=XmlNode.ChildNodes[i]; if (ChildXml.Name=="Propriedades") { foreach( XmlNode prop in ChildXml.ChildNodes) { var propUI = novoNodo.AdicionarPropriedade(); propUI.gameObject.SetActive(true); propUI.nome = prop.Attributes["Nome"].Value; propUI.Valor = prop.Attributes["Valor"].Value; propUI.SetarNome(); propUI.SetarValor(); propUI.gameObject.SetActive(false); // Debug.Log("adicionando " + propUI.nome); } } if (ChildXml.Name == "PortaSaida") { // Debug.Log("chegou no nodo de saida"); if(ChildXml.ChildNodes.Count>0) { // Debug.Log("adicionando porta numero de filhos:" + ChildXml.ChildNodes.Count); // novoNodo.AdicionarPorta(); } foreach (XmlNode xmlNodeChild in ChildXml.ChildNodes) { TraverseNodeImportar(novoNodo, xmlNodeChild); } } } }