Edge Removal Detection

This commit is contained in:
Chromium 2025-04-27 02:15:04 +01:00
parent 0c53ac8d18
commit a6e9038da5
3 changed files with 26 additions and 4 deletions

View File

@ -1,4 +1,5 @@
namespace ImageProcessingGraph.Editor using UnityEditor.Experimental.GraphView;
namespace ImageProcessingGraph.Editor
{ {
[System.Serializable] [System.Serializable]
public struct GraphConnection public struct GraphConnection
@ -6,16 +7,20 @@
public GraphPort inputPort; public GraphPort inputPort;
public GraphPort outputPort; public GraphPort outputPort;
public GraphConnection(GraphPort inputPort, GraphPort outputPort) public Edge internalEdge;
public GraphConnection(GraphPort inputPort, GraphPort outputPort, Edge internalEdge)
{ {
this.inputPort = inputPort; this.inputPort = inputPort;
this.outputPort = outputPort; 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.inputPort = new GraphPort(inputNodeGuid, inputPortID, inputNodeType);
this.outputPort = new GraphPort(outputNodeGuid, outputPortID, outputNodeType); this.outputPort = new GraphPort(outputNodeGuid, outputPortID, outputNodeType);
this.internalEdge = internalEdge;
} }
} }
@ -26,6 +31,7 @@
public string nodeType; public string nodeType;
public int portID; public int portID;
public GraphPort(string nodeID, int portID, string nodeType) public GraphPort(string nodeID, int portID, string nodeType)
{ {
this.nodeID = nodeID; this.nodeID = nodeID;

View File

@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityEditor.Experimental.GraphView; using UnityEditor.Experimental.GraphView;
using UnityEditor.MemoryProfiler;
using UnityEngine; using UnityEngine;
using UnityEngine.UIElements; using UnityEngine.UIElements;
@ -26,6 +27,21 @@ namespace ImageProcessingGraph.Editor.Unity_Image_Processing.Scripts.Editor.Wind
{ {
window.searchProvider.target = (VisualElement)window.focusController.focusedElement; window.searchProvider.target = (VisualElement)window.focusController.focusedElement;
SearchWindow.Open(new SearchWindowContext(position), window.searchProvider); SearchWindow.Open(new SearchWindowContext(position), window.searchProvider);
List<GraphConnection> connections = new List<GraphConnection>();
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) public void OnDrop(UnityEditor.Experimental.GraphView.GraphView graphView, Edge edge)

View File

@ -288,7 +288,7 @@ namespace ImageProcessingGraph.Editor
string inputType = inputNode.GraphNode.GetType().Name; string inputType = inputNode.GraphNode.GetType().Name;
string outputType = outputNode.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); asset.Connections.Add(connection);
} }