//Weitere Methode, welche beim anklicken des Toggles aufgerufen wird //Diese Methode aktualisiert den isSink-Wert der Node in dem entsprechenden Node-Objekt public void SetSink() { //Der aktuelle Tabellenindex der angeklickten Node int currentIndex = gameObject.transform.parent.GetSiblingIndex() - 1; //Test-Ausgabe Debug.Log("Sink Index: " + currentIndex); //Node-Liste wird aus dem CController geladen und in lokale Liste gespeichert nodes = ccont.GetAllNodes(); //Senke updaten foreach (Node n in nodes) { if (n != nodes[currentIndex]) { n.setSink(false); if (!n.isSource) { ccont.GetNodeAsGameObject(n.getName()).transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().material = ccont.nodeMaterial; } } else { n.setSink(true); ccont.GetNodeAsGameObject(n.getName()).transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().material = ccont.sinkMaterial; } } //Node-Liste im CController aktualisieren ccont.SetAllNodes(nodes); }
//Weitere Methode, welche beim Anklicken des Toggles aufgerufen wird public void SetSource() { //Der aktuelle Index des Knotens in der Tabelle //Dieser Stimmt mit dem Index des korrepsondierenden Knotens in der Node-Liste überein int currentIndex = gameObject.transform.parent.GetSiblingIndex() - 1; //Test-Ausgabe um den Index zu überprüfen Debug.Log("Source Index: " + currentIndex); //Die Node-Liste aus der CController auslesen nodes = ccont.GetAllNodes(); // Quelle einfärben //Quelle updaten foreach (Node n in nodes) { if (n != nodes[currentIndex]) { n.setSource(false); if (!n.isSink) { ccont.GetNodeAsGameObject(n.getName()).transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().material = ccont.nodeMaterial; } } else { n.setSource(true); ccont.GetNodeAsGameObject(nodes[currentIndex].getName()).transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().material = ccont.sourceMaterial; } } //Die Node-Liste aus dem CController wird aktualisiert ccont.SetAllNodes(nodes); }
public void DeleteVertex() { nodes = ccont.GetAllNodes(); edges = ccont.getAllEdges(); //Auslesen der im Knoten anliegenden Kanten edgeStartList = rowManager.GetEdgeStartList(); edgeEndList = rowManager.GetEdgeEndList(); Debug.Log(gameObject.transform.parent.name); Debug.Log(edgeStartList.Count); int currentIndex = gameObject.transform.parent.GetSiblingIndex() - 1; Debug.Log("Tabel-Index: " + currentIndex); //Connected Edges Löschen connectedEdges = nodes[currentIndex].getConnectedEdges(); if (connectedEdges != null) { foreach (Edge e in connectedEdges) { Node tempStart = ccont.GetNodeAsObject(e.getStart()); Node tempEnd = ccont.GetNodeAsObject(e.getEnd()); if (tempStart.getName() == nodes[currentIndex].getName()) { tempEnd.getConnectedEdges().Remove(e); } else if (tempEnd.getName() == nodes[currentIndex].getName()) { tempStart.getConnectedEdges().Remove(e); } Destroy(GameObject.Find(e.getEdgeName())); Destroy(GameObject.FindGameObjectWithTag("EdgeContent").transform.Find(e.getEdgeName()).gameObject); edges.Remove(e); } } nodes.RemoveAt(currentIndex); Debug.Log("Nodes left: "); foreach (Node n in nodes) { connectedEdges = n.getConnectedEdges(); Debug.Log(n.nodeName + "Connected Edges: "); foreach (Edge e in connectedEdges) { Debug.Log(e.getEdgeName()); } } ccont.SetAllNodes(nodes); /* * for (int i = 0; i < edgeStartList.Count; i++) * { * GameObject deleteThis = null; * //Wenn ein Knoten aus der Startliste der Edges mit dem gelöschten Knoten übereinstimmt, wird die Entsprechende Kante gelöscht * * //Gameobject, dessen parent dann gelöscht wird * Debug.Log(edgeStartList[i].ToString()); * if (gameObject.transform.parent.name.Equals(edgeStartList[i].ToString()) || gameObject.transform.parent.name.Equals(edgeEndList[i].ToString())) * { * deleteThis = GameObject.Find(gameObject.transform.parent.name + "(Edge)").transform.parent.gameObject; * } * Debug.Log("Delete: " + deleteThis.name); * Destroy(deleteThis); * * } */ /* Löschen der Zeile in der Tabelle */ //Parent-Objekt initialisieren parent = gameObject.transform.parent.gameObject; //Parent-Objekt löschen Destroy(parent); /* Löschen des Knotens oder der Kante */ objectName = parent.gameObject.transform.Find("VertexName").GetComponent <Text>().text; deleteThis = GameObject.Find(objectName); Destroy(deleteThis); //Knotennummer verringern ccont.vertexCount--; }