Skip to content

Commit 3329b25

Browse files
committed
Fixed port update custom method & order in graph context menu
1 parent f2d1433 commit 3329b25

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

Assets/com.alelievr.NodeGraphProcessor/Editor/Views/BaseGraphView.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -449,9 +449,9 @@ public override List< Port > GetCompatiblePorts(Port startPort, NodeAdapter node
449449
/// <param name="evt"></param>
450450
public override void BuildContextualMenu(ContextualMenuPopulateEvent evt)
451451
{
452-
BuildGroupContextualMenu(evt);
453-
BuildStickyNoteContextualMenu(evt);
454452
base.BuildContextualMenu(evt);
453+
BuildGroupContextualMenu(evt, 1);
454+
BuildStickyNoteContextualMenu(evt, 2);
455455
BuildViewContextualMenu(evt);
456456
BuildSelectAssetContextualMenu(evt);
457457
BuildSaveAssetContextualMenu(evt);
@@ -462,21 +462,25 @@ public override void BuildContextualMenu(ContextualMenuPopulateEvent evt)
462462
/// Add the New Group entry to the context menu
463463
/// </summary>
464464
/// <param name="evt"></param>
465-
protected virtual void BuildGroupContextualMenu(ContextualMenuPopulateEvent evt)
465+
protected virtual void BuildGroupContextualMenu(ContextualMenuPopulateEvent evt, int menuPosition = -1)
466466
{
467+
if (menuPosition == -1)
468+
menuPosition = evt.menu.MenuItems().Count;
467469
Vector2 position = (evt.currentTarget as VisualElement).ChangeCoordinatesTo(contentViewContainer, evt.localMousePosition);
468-
evt.menu.AppendAction("New Group", (e) => AddSelectionsToGroup(AddGroup(new Group("New Group", position))), DropdownMenuAction.AlwaysEnabled);
470+
evt.menu.InsertAction(menuPosition, "Create Group", (e) => AddSelectionsToGroup(AddGroup(new Group("Create Group", position))), DropdownMenuAction.AlwaysEnabled);
469471
}
470472

471473
/// <summary>
472474
/// -Add the New Sticky Note entry to the context menu
473475
/// </summary>
474476
/// <param name="evt"></param>
475-
protected virtual void BuildStickyNoteContextualMenu(ContextualMenuPopulateEvent evt)
477+
protected virtual void BuildStickyNoteContextualMenu(ContextualMenuPopulateEvent evt, int menuPosition = -1)
476478
{
479+
if (menuPosition == -1)
480+
menuPosition = evt.menu.MenuItems().Count;
477481
#if UNITY_2020_1_OR_NEWER
478482
Vector2 position = (evt.currentTarget as VisualElement).ChangeCoordinatesTo(contentViewContainer, evt.localMousePosition);
479-
evt.menu.AppendAction("New Sticky Note", (e) => AddStickyNote(new StickyNote("New Note", position)), DropdownMenuAction.AlwaysEnabled);
483+
evt.menu.InsertAction(menuPosition, "Create Sticky Note", (e) => AddStickyNote(new StickyNote("Create Note", position)), DropdownMenuAction.AlwaysEnabled);
480484
#endif
481485
}
482486

Assets/com.alelievr.NodeGraphProcessor/Editor/Views/BaseNodeView.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ protected VisualElement AddControlField(FieldInfo field, string label = null, bo
758758
}, showInputDrawer ? "" : label);
759759

760760
// Disallow picking scene objects when the graph is not linked to a scene
761-
if (!owner.graph.IsLinkedToScene())
761+
if (element != null && !owner.graph.IsLinkedToScene())
762762
{
763763
var objectField = element.Q<ObjectField>();
764764
if (objectField != null)
@@ -780,6 +780,7 @@ protected VisualElement AddControlField(FieldInfo field, string label = null, bo
780780
}
781781
else
782782
{
783+
element.name = field.Name;
783784
controlsContainer.Add(element);
784785
}
785786
}

Assets/com.alelievr.NodeGraphProcessor/Runtime/Elements/BaseNode.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,11 @@ public bool UpdateAllPorts()
304304
{
305305
bool changed = false;
306306

307-
foreach (var field in nodeFields)
308-
changed |= UpdatePortsForField(field.Value.fieldName);
307+
foreach (var key in OverrideFieldOrder(nodeFields.Values.Select(k => k.info)))
308+
{
309+
var field = nodeFields[key.Name];
310+
changed |= UpdatePortsForField(field.fieldName);
311+
}
309312

310313
return changed;
311314
}
@@ -317,8 +320,11 @@ public bool UpdateAllPortsLocal()
317320
{
318321
bool changed = false;
319322

320-
foreach (var field in nodeFields)
321-
changed |= UpdatePortsForFieldLocal(field.Value.fieldName);
323+
foreach (var key in OverrideFieldOrder(nodeFields.Values.Select(k => k.info)))
324+
{
325+
var field = nodeFields[key.Name];
326+
changed |= UpdatePortsForFieldLocal(field.fieldName);
327+
}
322328

323329
return changed;
324330
}

0 commit comments

Comments
 (0)