- 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