Skip to content

Commit 2322667

Browse files
authored
Merge pull request #145 from alelievr/customize-edgeview
Customize edgeview
2 parents e017b1d + 83c2a02 commit 2322667

File tree

6 files changed

+47
-29
lines changed

6 files changed

+47
-29
lines changed

Assets/com.alelievr.NodeGraphProcessor/Editor/Logic/EdgeConnectorListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace GraphProcessor
1212
/// </summary>
1313
public class BaseEdgeConnectorListener : IEdgeConnectorListener
1414
{
15-
protected readonly BaseGraphView graphView;
15+
public readonly BaseGraphView graphView;
1616

1717
Dictionary< Edge, PortView > edgeInputPorts = new Dictionary< Edge, PortView >();
1818
Dictionary< Edge, PortView > edgeOutputPorts = new Dictionary< Edge, PortView >();

Assets/com.alelievr.NodeGraphProcessor/Editor/Utils/BaseEdgeConnector.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,26 @@ namespace GraphProcessor
99
{
1010
public class BaseEdgeConnector : EdgeConnector
1111
{
12-
BaseEdgeDragHelper dragHelper;
12+
protected BaseEdgeDragHelper dragHelper;
1313
Edge edgeCandidate;
14-
private bool active;
14+
protected bool active;
1515
Vector2 mouseDownPosition;
16+
protected BaseGraphView graphView;
1617

1718
internal const float k_ConnectionDistanceTreshold = 10f;
1819

1920
public BaseEdgeConnector(IEdgeConnectorListener listener) : base()
2021
{
21-
dragHelper = new BaseEdgeDragHelper(listener);
22+
graphView = (listener as BaseEdgeConnectorListener)?.graphView;
2223
active = false;
24+
InitEdgeConnector(listener);
25+
}
26+
27+
protected virtual void InitEdgeConnector(IEdgeConnectorListener listener)
28+
{
29+
dragHelper = new BaseEdgeDragHelper(listener);
2330
activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse });
24-
}
31+
}
2532

2633
public override EdgeDragHelper edgeDragHelper => dragHelper;
2734

@@ -63,7 +70,7 @@ protected virtual void OnMouseDown(MouseDownEvent e)
6370

6471
mouseDownPosition = e.localMousePosition;
6572

66-
edgeCandidate = new EdgeView();
73+
edgeCandidate = graphView != null ? graphView.CreateEdgeView() : new EdgeView();
6774
edgeDragHelper.draggedPort = graphElement;
6875
edgeDragHelper.edgeCandidate = edgeCandidate;
6976

Assets/com.alelievr.NodeGraphProcessor/Editor/Utils/BaseEdgeDragHelper.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public override void HandleMouseMove(MouseMoveEvent evt)
218218
{
219219
if (ghostEdge == null)
220220
{
221-
ghostEdge = new EdgeView();
221+
ghostEdge = CreateEdgeView();
222222
ghostEdge.isGhostEdge = true;
223223
ghostEdge.pickingMode = PickingMode.Ignore;
224224
graphView.AddElement(ghostEdge);
@@ -260,6 +260,11 @@ public override void HandleMouseMove(MouseMoveEvent evt)
260260
}
261261
}
262262

263+
protected virtual EdgeView CreateEdgeView()
264+
{
265+
return new EdgeView();
266+
}
267+
263268
private void Pan(TimerState ts)
264269
{
265270
graphView.viewTransform.position -= panDiff;

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

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -289,19 +289,22 @@ void UnserializeAndPasteCallback(string operationName, string serializedData)
289289

290290
if (nodeViewsPerNode.ContainsKey(oldInputNode) && nodeViewsPerNode.ContainsKey(oldOutputNode))
291291
{
292-
var edgeView = new EdgeView()
293-
{
294-
userData = newEdge,
295-
input = nodeViewsPerNode[oldInputNode].GetPortViewFromFieldName(newEdge.inputFieldName, newEdge.inputPortIdentifier),
296-
output = nodeViewsPerNode[oldOutputNode].GetPortViewFromFieldName(newEdge.outputFieldName, newEdge.outputPortIdentifier)
297-
};
292+
var edgeView = CreateEdgeView();
293+
edgeView.userData = newEdge;
294+
edgeView.input = nodeViewsPerNode[oldInputNode].GetPortViewFromFieldName(newEdge.inputFieldName, newEdge.inputPortIdentifier);
295+
edgeView.output = nodeViewsPerNode[oldOutputNode].GetPortViewFromFieldName(newEdge.outputFieldName, newEdge.outputPortIdentifier);
298296

299297
Connect(edgeView);
300298
}
301299
}
302300
}
303301

304-
GraphViewChange GraphViewChangedCallback(GraphViewChange changes)
302+
public virtual EdgeView CreateEdgeView()
303+
{
304+
return new EdgeView();
305+
}
306+
307+
GraphViewChange GraphViewChangedCallback(GraphViewChange changes)
305308
{
306309
if (changes.elementsToRemove != null)
307310
{
@@ -764,11 +767,11 @@ void InitializeEdgeViews()
764767
if (inputNodeView == null || outputNodeView == null)
765768
continue;
766769

767-
var edgeView = new EdgeView() {
768-
userData = serializedEdge,
769-
input = inputNodeView.GetPortViewFromFieldName(serializedEdge.inputFieldName, serializedEdge.inputPortIdentifier),
770-
output = outputNodeView.GetPortViewFromFieldName(serializedEdge.outputFieldName, serializedEdge.outputPortIdentifier)
771-
};
770+
var edgeView = CreateEdgeView();
771+
edgeView.userData = serializedEdge;
772+
edgeView.input = inputNodeView.GetPortViewFromFieldName(serializedEdge.inputFieldName, serializedEdge.inputPortIdentifier);
773+
edgeView.output = outputNodeView.GetPortViewFromFieldName(serializedEdge.outputFieldName, serializedEdge.outputPortIdentifier);
774+
772775

773776
ConnectView(edgeView);
774777
}
@@ -1087,12 +1090,11 @@ public bool Connect(PortView inputPortView, PortView outputPortView, bool autoDi
10871090

10881091
var newEdge = SerializableEdge.CreateNewEdge(graph, inputPort, outputPort);
10891092

1090-
var edgeView = new EdgeView()
1091-
{
1092-
userData = newEdge,
1093-
input = inputPortView,
1094-
output = outputPortView,
1095-
};
1093+
var edgeView = CreateEdgeView();
1094+
edgeView.userData = newEdge;
1095+
edgeView.input = inputPortView;
1096+
edgeView.output = outputPortView;
1097+
10961098

10971099
return Connect(edgeView);
10981100
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,10 @@ public PortView GetPortViewFromFieldName(string fieldName, string identifier)
280280
});
281281
}
282282

283+
283284
public PortView AddPort(FieldInfo fieldInfo, Direction direction, BaseEdgeConnectorListener listener, PortData portData)
284285
{
285-
PortView p = PortView.CreatePV(direction, fieldInfo, portData, listener);
286+
PortView p = CreatePortView(direction, fieldInfo, portData, listener);
286287

287288
if (p.direction == Direction.Input)
288289
{
@@ -317,7 +318,10 @@ public PortView AddPort(FieldInfo fieldInfo, Direction direction, BaseEdgeConnec
317318
return p;
318319
}
319320

320-
public void InsertPort(PortView portView, int index)
321+
protected virtual PortView CreatePortView(Direction direction, FieldInfo fieldInfo, PortData portData, BaseEdgeConnectorListener listener)
322+
=> PortView.CreatePortView(direction, fieldInfo, portData, listener);
323+
324+
public void InsertPort(PortView portView, int index)
321325
{
322326
if (portView.direction == Direction.Input)
323327
{

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class PortView : Port
3030

3131
readonly string portStyle = "GraphProcessorStyles/PortView";
3232

33-
PortView(Direction direction, FieldInfo fieldInfo, PortData portData, BaseEdgeConnectorListener edgeConnectorListener)
33+
protected PortView(Direction direction, FieldInfo fieldInfo, PortData portData, BaseEdgeConnectorListener edgeConnectorListener)
3434
: base(portData.vertical ? Orientation.Vertical : Orientation.Horizontal, direction, Capacity.Multi, portData.displayType ?? fieldInfo.FieldType)
3535
{
3636
this.fieldInfo = fieldInfo;
@@ -53,7 +53,7 @@ public class PortView : Port
5353
this.tooltip = portData.tooltip;
5454
}
5555

56-
public static PortView CreatePV(Direction direction, FieldInfo fieldInfo, PortData portData, BaseEdgeConnectorListener edgeConnectorListener)
56+
public static PortView CreatePortView(Direction direction, FieldInfo fieldInfo, PortData portData, BaseEdgeConnectorListener edgeConnectorListener)
5757
{
5858
var pv = new PortView(direction, fieldInfo, portData, edgeConnectorListener);
5959
pv.m_EdgeConnector = new BaseEdgeConnector(edgeConnectorListener);

0 commit comments

Comments
 (0)