您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
37 行
1.5 KiB
37 行
1.5 KiB
using UnityEditor.Experimental.UIElements.GraphView;
|
|
using UnityEditor.Graphing;
|
|
using UnityEngine;
|
|
using Edge = UnityEditor.Experimental.UIElements.GraphView.Edge;
|
|
|
|
namespace UnityEditor.ShaderGraph.Drawing
|
|
{
|
|
public class EdgeConnectorListener : IEdgeConnectorListener
|
|
{
|
|
readonly AbstractMaterialGraph m_Graph;
|
|
readonly SearchWindowProvider m_SearchWindowProvider;
|
|
|
|
public EdgeConnectorListener(AbstractMaterialGraph graph, SearchWindowProvider searchWindowProvider)
|
|
{
|
|
m_Graph = graph;
|
|
m_SearchWindowProvider = searchWindowProvider;
|
|
}
|
|
|
|
public void OnDropOutsidePort(Edge edge, Vector2 position)
|
|
{
|
|
var draggedPort = (edge.output != null ? edge.output.edgeConnector.edgeDragHelper.draggedPort : null) ?? (edge.input != null ? edge.input.edgeConnector.edgeDragHelper.draggedPort : null);
|
|
m_SearchWindowProvider.connectedPort = draggedPort;
|
|
SearchWindow.Open(new SearchWindowContext(GUIUtility.GUIToScreenPoint(Event.current.mousePosition)), m_SearchWindowProvider);
|
|
}
|
|
|
|
public void OnDrop(GraphView graphView, Edge edge)
|
|
{
|
|
var leftSlot = edge.output.userData as ISlot;
|
|
var rightSlot = edge.input.userData as ISlot;
|
|
if (leftSlot != null && rightSlot != null)
|
|
{
|
|
m_Graph.owner.RegisterCompleteObjectUndo("Connect Edge");
|
|
m_Graph.Connect(leftSlot.slotReference, rightSlot.slotReference);
|
|
}
|
|
}
|
|
}
|
|
}
|