- Home /
Add selection in GraphView via code
Hi. First, please forgive my English. I made an editor with GraphView, which is in UI Builder. I also made a copy and pasting of nodes and I tried making the copied nodes selected, but I don't know how to do. It's like shader graph. When you copy and paste nodes with Ctrl+C and Crtl+V, the copied nodes are selected. I tried AddToSelection() and Select() of GraphElement, but it didn't work. How can I make it? It's the whole code about copy and pasting.
         public BehaviorTreeView() //is constructer
         {
             //others like AddManipulator, get stylesheet...
                         
             Undo.undoRedoPerformed += OnUndoRedo;
             this.serializeGraphElements += CopyOperation;
             this.unserializeAndPaste += PasteOperation;
         }
 
         List<NodeBase> nodesToCopy = new List<NodeBase>();
         public string CopyOperation(IEnumerable<GraphElement> elements)
         {
             nodesToCopy.Clear();
             foreach (GraphElement n in elements)
             {
                 //NodeView is a class that drived from UnityEditor.Experimental.GraphView.Node
                 //It has intput/output ports and which node to show as field
                 NodeView nodeView = n as NodeView;
                 if(nodeView != null)
                 {
                     nodesToCopy.Add(nodeView.node);
                 }
             }
             return "Copy Nodes";
         }
         public void PasteOperation(string operationName, string data)
         {
             //NodeBase is a class that drived from ScriptableObject
             //It has information of node, like guid and position of node
             foreach (NodeBase originalNode in nodesToCopy)
             {
                 //CreateNode(System.Type type, UnityEngine.Vector2 position)
                 //It makes node of which type is type(parameter) in position(parameter)
                 NodeView n = this.CreateNode(originalNode.GetType(), originalNode.position - new Vector2(2, 2));
             }
             PopulateView(tree); //== Refresh the editor window
         }
Answer by blueteak · Sep 15, 2021 at 11:53 PM
Use the AddSelection() method of the GraphView, you can just do AddSelection(n); in the loop. 
You can also call ClearSelection() at the top of the Paste method so that you create a new selection of only copied elements :) 
Your answer
 
 
             Follow this Question
Related Questions
Lining up GUI 1 Answer
Changes in variables from function triggered by editor script during edit mode are not applied. 2 Answers
Start/Stop Playmode from editor script 10 Answers
mouseposition and clicks in editor sceneview 0 Answers
How can I create a editor button that can not be selected 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                