diff --git a/Scripts/Editor/NodeEditorAction.cs b/Scripts/Editor/NodeEditorAction.cs
index 2c58bcd..be3d664 100644
--- a/Scripts/Editor/NodeEditorAction.cs
+++ b/Scripts/Editor/NodeEditorAction.cs
@@ -464,6 +464,15 @@ namespace XNodeEditor {
}
}
+ /// Draw this group on top of other group by placing it last in the graph.groups list
+ public void MoveGroupToTop(XNode.NodeGroup group) {
+ int index;
+ while ((index = graph.groups.IndexOf(group)) != graph.groups.Count - 1) {
+ graph.groups[index] = graph.groups[index + 1];
+ graph.groups[index + 1] = group;
+ }
+ }
+
/// Duplicate selected nodes and select the duplicates
public void DuplicateSelectedNodes() {
UnityEngine.Object[] newNodes = new UnityEngine.Object[Selection.objects.Length];
diff --git a/Scripts/Editor/NodeEditorWindow.cs b/Scripts/Editor/NodeEditorWindow.cs
index a223f4d..f9de26e 100644
--- a/Scripts/Editor/NodeEditorWindow.cs
+++ b/Scripts/Editor/NodeEditorWindow.cs
@@ -158,11 +158,18 @@ namespace XNodeEditor {
public void SelectNodesInGroup(XNode.NodeGroup group) {
Rect groupRect = new Rect(group.position, group.size);
+
for (int i = 0; i < graph.nodes.Count; i++) {
XNode.Node node = graph.nodes[i];
if (!node) continue;
if (groupRect.Contains(node.position)) SelectNode(node, true);
}
+
+ for (int i = 0; i < graph.groups.Count; i++) {
+ XNode.NodeGroup otherGroup = graph.groups[i];
+ if (!otherGroup || group == otherGroup) continue;
+ if (groupRect.Contains(otherGroup.position)) SelectGroup(otherGroup, true);
+ }
}
public void DeselectNodesInGroup(XNode.NodeGroup group)
@@ -176,6 +183,13 @@ namespace XNodeEditor {
if (groupRect.Contains(node.position)) selection.Remove(node);
}
+ for (int i = 0; i < graph.groups.Count; i++) {
+ XNode.NodeGroup otherGroup = graph.groups[i];
+ if (!otherGroup || group == otherGroup) continue;
+
+ if (groupRect.Contains(otherGroup.position)) selection.Remove(otherGroup);
+ }
+
Selection.objects = selection.ToArray();
}
diff --git a/Scripts/Editor/NodeGraphEditor.cs b/Scripts/Editor/NodeGraphEditor.cs
index a44c4db..2fc5c81 100644
--- a/Scripts/Editor/NodeGraphEditor.cs
+++ b/Scripts/Editor/NodeGraphEditor.cs
@@ -80,6 +80,7 @@ namespace XNodeEditor {
// Actions if only one node is selected
if (Selection.objects.Length == 1 && Selection.activeObject is XNode.NodeGroup) {
XNode.NodeGroup group = Selection.activeObject as XNode.NodeGroup;
+ menu.AddItem(new GUIContent("Move To Top"), false, () => NodeEditorWindow.current.MoveGroupToTop(group));
menu.AddItem(new GUIContent("Rename"), false, NodeEditorWindow.current.RenameSelectedGroup);
}