private void ClearCurrentGraph() { foreach (Edge e in m_edgesList) { m_targetGraph.RemoveElement(e); } foreach (RoomNode r in m_roomsList) { m_targetGraph.RemoveElement(r); } }
}//cargar info del grafico private void ExpandNonTerminalNodes()//expandir los nodos NO MARCADOS con isTerminal -> nodos Non-Terminal { if (m_graphView.nodes.ToList().Cast <RoomNode>().Where(x => x.isTerminal == false).Count() > 0) { foreach (RoomNode rn in m_graphView.nodes.ToList().Cast <RoomNode>().Where(x => x.isTerminal == false)) { if (rn.outputContainer.Q <Port>() == null) { m_resourcesRulesLoaded = Resources.LoadAll <RoomInfoContainer>("Rules").ToList(); //cargo todas las reglas disponibles if (m_resourcesRulesLoaded.Exists(x => x.name.Contains(rn.roomType))) //si existe una regla que contenga el nombre del nodo que quiero expandir; { RoomInfoContainer[] l_candidateRules = m_resourcesRulesLoaded.Where(x => x.name.Contains(rn.roomType)).ToArray(); //cojo las reglas que coincidan int l_randomRuleSelection = Random.Range(0, l_candidateRules.Length); //escojo una regla al azar RoomInfoContainer l_ruleToLoad = l_candidateRules[l_randomRuleSelection]; CreateExpandedNodes(l_ruleToLoad, rn); //expando el nodo dependiendo de la regla m_graphView.RemoveElement(rn); //elimino el nodo expandido para dejar sitio a los nuevos //elimino los edges que pertenezcan al nodo expandido foreach (Edge e in m_graphView.edges.ToList()) { if ((e.input.node as RoomNode) == rn) { m_graphView.RemoveElement(e); } } } else { Debug.Log($"The node '{rn.roomType}' you'r trying to expand doesn't have a rule specified"); } } else { Debug.Log("Non-terminal nodes must have 0 outputs (should be placed at the end of the graph)"); } } } else { Debug.Log("0 Nodes to expand found. Only non-terminal nodes can be expanded. You should dismark 'isTerminal' from any node to expand it"); } }