示例#1
0
    //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);
    }
示例#2
0
    //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);
    }
    public void InstantiateVertex()
    {
        //Node-Liste aktualisieren
        nodes = ccont.GetAllNodes();

        isEdge = false;
        if (isEdge)
        {
            edgeName.text = nameGen.GenerateEdgeName();
        }
        if (!isEdge)
        {
            vertexName.text = nameGen.GenerateVertexName();
        }
        //Instanzierung des Prefabs
        GameObject nodeInTable = Instantiate(vertexPrefab, vertexParent.transform);

        nodeInTable.name = nodeInTable.name.Replace("(Clone)", "");
        nodeInTable.name = "Knoten " + (ccont.nodeNumber).ToString();
    }
示例#4
0
    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--;
    }