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); } } } }
void TraverseNodeExportar( NodoUI nodo, XmlElement nodoXMLPai, XmlDocument xml) { XmlElement novoNodoXML = xml.CreateElement("Nodo"); novoNodoXML.SetAttribute("Nome", nodo.nome); //serializar novas propriedades? XmlElement propriedades = xml.CreateElement("Propriedades"); for (int i = 0; i < nodo.listaDePropriedades.Count; i++) { XmlElement propriedade = xml.CreateElement("propriedade"); propriedade.SetAttribute("Nome", nodo.listaDePropriedades[i].nome); propriedade.SetAttribute( "Valor",nodo.listaDePropriedades[i].Valor); propriedades.AppendChild(propriedade); } novoNodoXML.AppendChild(propriedades); nodoXMLPai.AppendChild(novoNodoXML); foreach(var porta in nodo.listaDePortas) { if (porta.tipoDePorta == TipoDePorta.Saida) { XmlElement NovaportaXml = null ; if(porta.listaDeLinks.Count>0) { NovaportaXml = xml.CreateElement("PortaSaida"); novoNodoXML.AppendChild(NovaportaXml); } foreach (var link in porta.listaDeLinks) { //Debug.Log(link.entrada.transform.parent.name); TraverseNodeExportar(link.entrada.transform.parent.GetComponent<NodoUI>(), NovaportaXml, xml); } } } }
void FocusOnNodoSelecionado() { if(nodoSelecionadoAtualmente==null) { //nodoSelecionadoAtualmente = DicionarioDeNodos[IdNodoMaisAEsquerda()]; nodoSelecionadoAtualmente = ArrayDeNodos[IdNodoMaisAEsquerda()]; if (nodoSelecionadoAtualmente == null) return; } CameraGameObjct.transform.position = new Vector3(nodoSelecionadoAtualmente.transform.position.x, nodoSelecionadoAtualmente.transform.position.y, CameraGameObjct.transform.position.z); }
public void CancelarNodoSelecionado() { if (nodoSelecionadoAtualmente != null) { nodoSelecionadoAtualmente.GetComponent<NodoUI>().DesSelecionar(); nodoSelecionadoAtualmente = null; } if(PortaSelecionadaAtualmente!=null) { PortaSelecionadaAtualmente.GetComponent<PortaUI>().DesSelecionar(); } }
public void RemoverTodosNodos() { // foreach (var id in new List<int>(DicionarioDeNodos.Keys)) for (int id = 0; id < ArrayDeNodos.Length;id++ ) { if (ArrayDeNodos[id] != null) { // nodoSelecionadoAtualmente = DicionarioDeNodos[id]; nodoSelecionadoAtualmente = ArrayDeNodos[id]; RemoverNodo(); } } }
public void RemoverNodo() { if(nodoSelecionadoAtualmente==null) { Debug.Log("nada a apagar"); return; } int id = nodoSelecionadoAtualmente.id; // Debug.Log("id a ser removido=" + id); // Debug.Log(DicionarioDeNodos.Count); // DicionarioDeNodos[id].GetComponent<NodoUI>().RemoverTodasAsPortas(); ArrayDeNodos[id].RemoverTodasAsPortas(); // GameObject.Destroy(DicionarioDeNodos[id]); GameObject.Destroy(ArrayDeNodos[id].gameObject); Debug.Log("nodo destruido"); // DicionarioDeNodos.Remove(id); ArrayDeNodos[id] = null; nodoSelecionadoAtualmente = null; }