Ejemplo n.º 1
0
 public void DestroySubMenu(TGraph.ReadJSON.MyNode node)
 {
     if (!EditToggle.isOn || EditToggle == null || node.nodeObject.GetComponentInChildren <SubMenu>() == null)
     {
         return;
     }
     GameObject.Destroy(node.nodeObject.GetComponentInChildren <SubMenu>().gameObject);
 }
Ejemplo n.º 2
0
    public void ActivateSubMenu(TGraph.ReadJSON.MyNode node)
    {
        if (!EditToggle.isOn)
        {
            return;
        }
        GameObject menu = GameObject.Instantiate(Resources.Load("NodeMenu")) as GameObject;

        menu.transform.parent        = node.nodeObject.transform;
        menu.transform.localPosition = Vector3.zero - Camera.main.transform.forward;
        //   menu.transform.LookAt(menu.transform.position*2-Camera.main.transform.position);
        menu.transform.forward    = Camera.main.transform.forward;
        menu.transform.localScale = Vector3.one * .02f;

        int offset = 0;
        var field  = menu.GetComponent <SubMenu>().FieldInput;

        foreach (FieldInfo info in node.GetType().GetFields())
        {
            if (!info.IsNotSerialized && info.GetValue(node) != null)
            {
                var f = GameObject.Instantiate(field);
                f.transform.parent         = menu.transform;
                f.transform.position       = field.transform.position;
                f.transform.forward        = menu.transform.forward;
                f.transform.localScale     = Vector3.one;
                f.transform.localPosition += Vector3.down * offset * 25f;
                var texts = f.GetComponentsInChildren <Text>();
                texts[0].text = info.Name;
                f.GetComponentInChildren <InputField>().text = info.GetValue(node).ToString();

                offset++;
            }
        }
        GameObject.Destroy(field);
    }
Ejemplo n.º 3
0
    public bool SelectNode(int nodeId)
    {
        Debug.Log("select " + nodeId);
        var graph = TGraph.GlobalVariables.Graph;

        TGraph.ReadJSON.MyNode node = graph.nodes[nodeId];


        //edge drawing
        if (Startid != "")
        {
            Debug.Log(Startid);
            TGraph.GlobalVariables.JsonManager.AddEdge(graph.nodes[graph.nodeDict[Startid]], graph.nodes[nodeId]);
            Startid = "";
            return(true);
        }



        Debug.Log(graph.latestSelection);
        //TODO: look into this
        if (graph.selectedNodes.Contains(nodeId))
        {
            DeselectNode(nodeId);
            return(false);
        }


        //new node selected
        Debug.Log(nodeId);
        if (graph.latestSelection != -1 && graph.latestSelection != nodeId)
        {
            DeselectNode(graph.latestSelection);
        }



        //current Selection exists

        /*  if (graph.selectedNodes[0] != -1)
         * {
         *
         *    foreach(var idx in graph.selectedNodes)
         *    {
         *        if (idx != -1)
         *        {
         *            var graphNode = graph.nodes[idx];
         *
         *            graphNode.labelObject.GetComponent<TextMesh>().color = TGraph.ReadJSON.BaseColor;
         *            graphNode.labelObject.layer = 18;
         *            foreach (int nidx in graphNode.connectedNodes)
         *            {
         *                graph.nodes[nidx].labelObject.layer = 18;
         *                graph.nodes[nidx].labelObject.GetComponent<TextMesh>().color = TGraph.ReadJSON.BaseColor;
         *            }
         *            GameObject.Destroy(graphNode.nodeEdgeObject);
         *            graphNode.nodeEdgeObject = null;
         *        }
         *
         *    }
         *
         * }*/



        // Debug.Log(nodeId + " other has"+ graph.selectedNodes[(handIndex + 1) % 2]);

        //select node and highlight accordingly
        //if (nodeId != graph.selectedNodes[(handIndex + 1) % 2])


        if (graph.latestSelection != nodeId)
        {
            //Activate hidden chapters



            var edges = new List <TGraph.ReadJSON.MyEdge>();
            node.labelObject.GetComponent <TextMeshPro>().color = TGraph.ReadJSON.SelectedColor;
            node.labelObject.layer = 0;
            foreach (int nidx in node.connectedNodes)
            {
                graph.nodes[nidx].labelObject.layer = 0;

                if (graph.nodes[nidx].labelObject.GetComponent <TextMeshPro>().color != TGraph.ReadJSON.SelectedColor)
                {
                    graph.nodes[nidx].labelObject.GetComponent <TextMeshPro>().color = TGraph.ReadJSON.ConnectedColor;
                }
            }
            foreach (int idx in node.edgeIndicesIn)
            {
                edges.Add(graph.edges[idx]);
            }
            foreach (int idx in node.edgeIndicesOut)
            {
                edges.Add(graph.edges[idx]);
            }


            graph.nodes[nodeId].nodeEdgeObject = TGraph.GraphManager.BuildEdges(edges, ref graph, graph.edgeObject.GetComponent <MeshRenderer>().sharedMaterial);
            graph.nodes[nodeId].nodeEdgeObject.transform.parent           = graph.edgeObject.transform.parent;
            graph.nodes[nodeId].nodeEdgeObject.transform.localPosition    = Vector3.zero;
            graph.nodes[nodeId].nodeEdgeObject.transform.localEulerAngles = Vector3.zero;


            //  graph.currentTarget = -1;
            ActivateSubMenu(node);
        }
        graph.selectedNodes.Add((nodeId));
        graph.latestSelection = nodeId;

        /*
         * else
         * {
         *  graph.selectedNodes[handIndex] = graph.nodes[graph.selectedNodes[(handIndex + 1) % 2]].nr;
         *  graph.selectedNodes[(handIndex + 1) % 2] = -1;
         * }*/
        graph.movingNodes.Add(nodeId);



        return(true);
    }
Ejemplo n.º 4
0
        public void SelectNode(int nodeId)
        {
            //current Selection exists
            if (graph.selectedNodes[handIndex] != -1)
            {
                var graphNode = graph.nodes[graph.selectedNodes[handIndex]];

                graphNode.labelObject.GetComponent <TextMesh>().color = TGraph.ReadJSON.BaseColor;
                graphNode.labelObject.layer = 18;
                foreach (int nidx in graphNode.connectedNodes)
                {
                    graph.nodes[nidx].labelObject.layer = 18;
                    graph.nodes[nidx].labelObject.GetComponent <TextMesh>().color = TGraph.ReadJSON.BaseColor;
                }
                GameObject.Destroy(graphNode.nodeEdgeObject);
                graphNode.nodeEdgeObject = null;
            }



            TGraph.ReadJSON.MyNode node = graph.nodes[nodeId];


            // Debug.Log(nodeId + " other has"+ graph.selectedNodes[(handIndex + 1) % 2]);

            //select node and highlight accordingly
            if (nodeId != graph.selectedNodes[(handIndex + 1) % 2])
            {
                var edges = new List <TGraph.ReadJSON.MyEdge>();
                node.labelObject.GetComponent <TextMesh>().color = TGraph.ReadJSON.SelectedColor;
                node.labelObject.layer = 0;
                foreach (int nidx in node.connectedNodes)
                {
                    graph.nodes[nidx].labelObject.layer = 0;
                    graph.nodes[nidx].labelObject.GetComponent <TextMesh>().color = TGraph.ReadJSON.ConnectedColor;
                }
                foreach (int idx in node.edgeIndicesIn)
                {
                    edges.Add(graph.edges[idx]);
                }
                foreach (int idx in node.edgeIndicesOut)
                {
                    edges.Add(graph.edges[idx]);
                }


                graph.nodes[nodeId].nodeEdgeObject = TGraph.GraphManager.BuildEdges(edges, ref graph, graph.edgeObject.GetComponent <MeshRenderer>().sharedMaterial);
                graph.nodes[nodeId].nodeEdgeObject.transform.parent           = graph.edgeObject.transform.parent;
                graph.nodes[nodeId].nodeEdgeObject.transform.localPosition    = Vector3.zero;
                graph.nodes[nodeId].nodeEdgeObject.transform.localEulerAngles = Vector3.zero;

                graph.selectedNodes[handIndex] = (nodeId);
                graph.latestSelection          = nodeId;
                graph.currentTarget            = -1;

                if (OnSelectionChanged != null)
                {
                    OnSelectionChanged();
                }
            }
            else
            {
                graph.selectedNodes[handIndex]           = graph.nodes[graph.selectedNodes[(handIndex + 1) % 2]].nr;
                graph.selectedNodes[(handIndex + 1) % 2] = -1;
            }

            graph.movingNodes.Add(nodeId);
        }