From a6e9038da51115e0a85f02361a762f2dcdfcc59b Mon Sep 17 00:00:00 2001 From: Chromium <62724067+Chromum@users.noreply.github.com> Date: Sun, 27 Apr 2025 02:15:04 +0100 Subject: [PATCH] Edge Removal Detection --- .../Scripts/Editor/Nodes/Base/PortConnection.cs | 12 +++++++++--- .../ImageProcessingGraphEdgeConnectorListener.cs | 16 ++++++++++++++++ .../Windows/ImageProcessingGraphViewWindow.cs | 2 +- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Editor/Scripts/Editor/Nodes/Base/PortConnection.cs b/Editor/Scripts/Editor/Nodes/Base/PortConnection.cs index b3e7180..1a3d0de 100644 --- a/Editor/Scripts/Editor/Nodes/Base/PortConnection.cs +++ b/Editor/Scripts/Editor/Nodes/Base/PortConnection.cs @@ -1,4 +1,5 @@ -namespace ImageProcessingGraph.Editor +using UnityEditor.Experimental.GraphView; +namespace ImageProcessingGraph.Editor { [System.Serializable] public struct GraphConnection @@ -6,16 +7,20 @@ public GraphPort inputPort; public GraphPort outputPort; - public GraphConnection(GraphPort inputPort, GraphPort outputPort) + public Edge internalEdge; + + public GraphConnection(GraphPort inputPort, GraphPort outputPort, Edge internalEdge) { this.inputPort = inputPort; this.outputPort = outputPort; + this.internalEdge = internalEdge; } - public GraphConnection(string inputNodeGuid, int inputPortID, string inputNodeType, string outputNodeGuid, int outputPortID, string outputNodeType) + public GraphConnection(string inputNodeGuid, int inputPortID, string inputNodeType, string outputNodeGuid, int outputPortID, string outputNodeType, Edge internalEdge) { this.inputPort = new GraphPort(inputNodeGuid, inputPortID, inputNodeType); this.outputPort = new GraphPort(outputNodeGuid, outputPortID, outputNodeType); + this.internalEdge = internalEdge; } } @@ -26,6 +31,7 @@ public string nodeType; public int portID; + public GraphPort(string nodeID, int portID, string nodeType) { this.nodeID = nodeID; diff --git a/Editor/Scripts/Editor/Windows/ImageProcessingGraphEdgeConnectorListener.cs b/Editor/Scripts/Editor/Windows/ImageProcessingGraphEdgeConnectorListener.cs index 680a569..7e2240a 100644 --- a/Editor/Scripts/Editor/Windows/ImageProcessingGraphEdgeConnectorListener.cs +++ b/Editor/Scripts/Editor/Windows/ImageProcessingGraphEdgeConnectorListener.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using UnityEditor.Experimental.GraphView; +using UnityEditor.MemoryProfiler; using UnityEngine; using UnityEngine.UIElements; @@ -26,6 +27,21 @@ namespace ImageProcessingGraph.Editor.Unity_Image_Processing.Scripts.Editor.Wind { window.searchProvider.target = (VisualElement)window.focusController.focusedElement; SearchWindow.Open(new SearchWindowContext(position), window.searchProvider); + + List connections = new List(); + + foreach (var conn in window.asset.Connections) + { + if (conn.internalEdge == edge) + { + connections.Add(conn); + } + } + + foreach (var VARIABLE in connections) + { + window.asset.Connections.Remove(VARIABLE); + } } public void OnDrop(UnityEditor.Experimental.GraphView.GraphView graphView, Edge edge) diff --git a/Editor/Scripts/Editor/Windows/ImageProcessingGraphViewWindow.cs b/Editor/Scripts/Editor/Windows/ImageProcessingGraphViewWindow.cs index dca7f0a..573dafa 100644 --- a/Editor/Scripts/Editor/Windows/ImageProcessingGraphViewWindow.cs +++ b/Editor/Scripts/Editor/Windows/ImageProcessingGraphViewWindow.cs @@ -288,7 +288,7 @@ namespace ImageProcessingGraph.Editor string inputType = inputNode.GraphNode.GetType().Name; string outputType = outputNode.GraphNode.GetType().Name; - GraphConnection connection = new GraphConnection(inputNode.GraphNode.ID,inputIndex, inputType,outputNode.GraphNode.ID, outputIndex, outputType); + GraphConnection connection = new GraphConnection(inputNode.GraphNode.ID,inputIndex, inputType,outputNode.GraphNode.ID, outputIndex, outputType, edge); asset.Connections.Add(connection); }