Skip to content

Commit 8c6ac35

Browse files
authored
Merge pull request #109 from gelonsoft/customize-edgeview
New feature - PortView and EdgeView customization, removed hardcoded instance creation
2 parents e017b1d + 35319c7 commit 8c6ac35

File tree

5 files changed

+50
-27
lines changed

5 files changed

+50
-27
lines changed

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

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,24 @@ 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;
1616

1717
internal const float k_ConnectionDistanceTreshold = 10f;
1818

1919
public BaseEdgeConnector(IEdgeConnectorListener listener) : base()
2020
{
21-
dragHelper = new BaseEdgeDragHelper(listener);
2221
active = false;
22+
initEdgeConnector(listener);
23+
}
24+
25+
protected virtual void initEdgeConnector(IEdgeConnectorListener listener)
26+
{
27+
dragHelper = new BaseEdgeDragHelper(listener);
2328
activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse });
24-
}
29+
}
2530

2631
public override EdgeDragHelper edgeDragHelper => dragHelper;
2732

@@ -63,7 +68,7 @@ protected virtual void OnMouseDown(MouseDownEvent e)
6368

6469
mouseDownPosition = e.localMousePosition;
6570

66-
edgeCandidate = new EdgeView();
71+
edgeCandidate = CreateEdgeView();
6772
edgeDragHelper.draggedPort = graphElement;
6873
edgeDragHelper.edgeCandidate = edgeCandidate;
6974

@@ -81,6 +86,11 @@ protected virtual void OnMouseDown(MouseDownEvent e)
8186
}
8287
}
8388

89+
protected virtual EdgeView CreateEdgeView()
90+
{
91+
return new EdgeView();
92+
}
93+
8494
void OnCaptureOut(MouseCaptureOutEvent e)
8595
{
8696
active = false;

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+
protected 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: 8 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,12 @@ 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(Orientation horizontal, Direction direction, FieldInfo fieldInfo, PortData portData, BaseEdgeConnectorListener listener)
322+
{
323+
return PortView.CreatePV(horizontal, direction, fieldInfo, portData, listener);
324+
}
325+
326+
public void InsertPort(PortView portView, int index)
321327
{
322328
if (portView.direction == Direction.Input)
323329
{

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

Lines changed: 1 addition & 1 deletion
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;

0 commit comments

Comments
 (0)