Skip to content

Commit 5b70eda

Browse files
author
Antoine Lelièvre
committed
Fixed copy/paste groups from another graph window
1 parent 6630f1f commit 5b70eda

File tree

5 files changed

+98
-46
lines changed

5 files changed

+98
-46
lines changed

Assets/Examples/ExposedPropertiesExample.asset

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,27 @@ MonoBehaviour:
1414
m_EditorClassIdentifier:
1515
serializedNodes:
1616
- type: PrintNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
17-
jsonDatas: '{"GUID":"39fdf09f-b7ff-49f5-bfe5-c59e221c30b6","computeOrder":1,"canProcess":true,"position":{"serializedVersion":"2","x":415.0,"y":101.0,"width":72.0,"height":95.0},"expanded":true,"debug":false,"nodeLock":false}'
17+
jsonDatas: '{"GUID":"39fdf09f-b7ff-49f5-bfe5-c59e221c30b6","computeOrder":0,"position":{"serializedVersion":"2","x":433.76806640625,"y":99.8499984741211,"width":74.00001525878906,"height":90.0},"expanded":true,"debug":false,"nodeLock":false}'
1818
- type: SubNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
19-
jsonDatas: '{"GUID":"1327efdb-6d08-421e-a601-67e39e1c4073","computeOrder":3,"canProcess":true,"position":{"serializedVersion":"2","x":316.0,"y":268.0,"width":98.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"inputA":42.0,"inputB":12.0,"output":30.0}'
19+
jsonDatas: '{"GUID":"e33a42d0-53e3-410d-a7ea-ef8351352617","computeOrder":3,"position":{"serializedVersion":"2","x":348.0703430175781,"y":335.1808776855469,"width":103.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"inputA":42.0,"inputB":12.0,"output":30.0}'
2020
- type: FloatNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
21-
jsonDatas: '{"GUID":"47e80399-61e7-4350-9ff3-aa91b54eabe3","computeOrder":1,"canProcess":true,"position":{"serializedVersion":"2","x":193.0,"y":225.5,"width":100.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"output":42.0,"input":0.0}'
21+
jsonDatas: '{"GUID":"e21d7285-83cc-47ce-9699-4f8e38c4b914","computeOrder":1,"position":{"serializedVersion":"2","x":225.07032775878907,"y":293.1808776855469,"width":108.00000762939453,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"input":0.0,"output":42.0}'
2222
- type: FloatNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
23-
jsonDatas: '{"GUID":"5a439c2f-4655-43ed-a6ae-e142b92b25ce","computeOrder":1,"canProcess":true,"position":{"serializedVersion":"2","x":191.5,"y":325.5,"width":100.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"output":12.0,"input":0.0}'
23+
jsonDatas: '{"GUID":"45ce896a-3bab-4e35-919e-6b1a7f8d79cf","computeOrder":2,"position":{"serializedVersion":"2","x":224.07034301757813,"y":393.180908203125,"width":108.00000762939453,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"input":0.0,"output":12.0}'
2424
edges:
25-
- GUID: 9da87722-5b0e-491d-af10-63206a3ca74e
25+
- GUID: e945eba0-fecc-47ab-9cb2-3d7218beb383
2626
owner: {fileID: 11400000}
27-
inputNodeGUID: 1327efdb-6d08-421e-a601-67e39e1c4073
28-
outputNodeGUID: 5a439c2f-4655-43ed-a6ae-e142b92b25ce
29-
inputFieldName: inputB
27+
inputNodeGUID: e33a42d0-53e3-410d-a7ea-ef8351352617
28+
outputNodeGUID: e21d7285-83cc-47ce-9699-4f8e38c4b914
29+
inputFieldName: inputA
3030
outputFieldName: output
3131
inputPortIdentifier:
3232
outputPortIdentifier:
33-
- GUID: cd6d29b2-5895-4265-bac2-12c7726ae674
33+
- GUID: ae143222-12f6-4f13-af26-c61b81888849
3434
owner: {fileID: 11400000}
35-
inputNodeGUID: 1327efdb-6d08-421e-a601-67e39e1c4073
36-
outputNodeGUID: 47e80399-61e7-4350-9ff3-aa91b54eabe3
37-
inputFieldName: inputA
35+
inputNodeGUID: e33a42d0-53e3-410d-a7ea-ef8351352617
36+
outputNodeGUID: 45ce896a-3bab-4e35-919e-6b1a7f8d79cf
37+
inputFieldName: inputB
3838
outputFieldName: output
3939
inputPortIdentifier:
4040
outputPortIdentifier:
@@ -64,7 +64,7 @@ MonoBehaviour:
6464
- position:
6565
serializedVersion: 2
6666
x: 0
67-
y: 204
67+
y: 338
6868
width: 193
6969
height: 322
7070
opened: 1
@@ -106,7 +106,7 @@ MonoBehaviour:
106106
input: 1
107107
settings:
108108
isHidden: 0
109-
position: {x: -259, y: 43, z: 0}
110-
scale: {x: 1.7490063, y: 1.7490063, z: 1}
109+
position: {x: 132, y: 191, z: 0}
110+
scale: {x: 0.65751624, y: 0.65751624, z: 1}
111111
references:
112112
version: 1

Assets/Examples/Multi-Port.asset

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,27 @@ MonoBehaviour:
1414
m_EditorClassIdentifier:
1515
serializedNodes:
1616
- type: FloatNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
17-
jsonDatas: '{"GUID":"2f236b55-86f6-4620-9c5b-08ffcfce738b","computeOrder":1,"position":{"serializedVersion":"2","x":208.61863708496095,"y":-106.57865142822266,"width":73.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"output":42.0,"input":42.0}'
17+
jsonDatas: '{"GUID":"2f236b55-86f6-4620-9c5b-08ffcfce738b","computeOrder":0,"position":{"serializedVersion":"2","x":208.61863708496095,"y":-106.57865142822266,"width":73.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"input":42.0,"output":42.0}'
1818
- type: FloatNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
19-
jsonDatas: '{"GUID":"fd0502d1-49cf-4491-aa43-1e22e5ad8d2c","computeOrder":1,"position":{"serializedVersion":"2","x":213.8728485107422,"y":10.29627799987793,"width":73.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"output":21.0,"input":21.0}'
19+
jsonDatas: '{"GUID":"fd0502d1-49cf-4491-aa43-1e22e5ad8d2c","computeOrder":1,"position":{"serializedVersion":"2","x":213.8728485107422,"y":10.29627799987793,"width":73.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"input":21.0,"output":21.0}'
2020
- type: FloatNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
21-
jsonDatas: '{"GUID":"e9d66bf0-09b9-40c9-a0ef-91532d921152","computeOrder":1,"position":{"serializedVersion":"2","x":213.72882080078126,"y":127.56866455078125,"width":73.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"output":0.0,"input":0.0}'
21+
jsonDatas: '{"GUID":"e9d66bf0-09b9-40c9-a0ef-91532d921152","computeOrder":2,"position":{"serializedVersion":"2","x":213.72882080078126,"y":127.56866455078125,"width":73.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"input":0.0,"output":0.0}'
2222
- type: CustomPortData, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
2323
jsonDatas: '{"GUID":"6905b57d-a5a7-4b09-a220-8be5fff7aa14","computeOrder":5,"position":{"serializedVersion":"2","x":548.0,"y":38.0,"width":116.0,"height":149.0},"expanded":true,"debug":false,"nodeLock":false,"output":0.0}'
2424
- type: PrefabNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
25-
jsonDatas: '{"GUID":"3bb6c7fa-55da-4b2d-9da9-f5b72a096c6e","computeOrder":1,"position":{"serializedVersion":"2","x":176.0,"y":232.0,"width":170.0,"height":97.0},"expanded":false,"debug":false,"nodeLock":false,"output":{"instanceID":0}}'
25+
jsonDatas: '{"GUID":"3bb6c7fa-55da-4b2d-9da9-f5b72a096c6e","computeOrder":4,"position":{"serializedVersion":"2","x":176.0,"y":232.0,"width":170.0,"height":97.0},"expanded":false,"debug":false,"nodeLock":false,"output":{"instanceID":0}}'
2626
- type: PrintNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
2727
jsonDatas: '{"GUID":"e33e83d3-9e78-414e-b9b2-ba99ca9b56ea","computeOrder":6,"position":{"serializedVersion":"2","x":732.657470703125,"y":194.0,"width":75.0,"height":91.0},"expanded":false,"debug":false,"nodeLock":false}'
2828
- type: MultiAddNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
2929
jsonDatas: '{"GUID":"034c760d-dc32-4435-9bf9-92b10b8f708f","computeOrder":3,"position":{"serializedVersion":"2","x":376.8260803222656,"y":-116.04349517822266,"width":132.0,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"output":63.0}'
3030
- type: CustomPortData, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
31-
jsonDatas: '{"GUID":"f9e9d1d0-e3ec-4c6b-b1c4-e279bd6b8e6f","computeOrder":1,"position":{"serializedVersion":"2","x":762.0,"y":-95.78260040283203,"width":112.00000762939453,"height":149.0},"expanded":false,"debug":false,"nodeLock":false,"output":0.0}'
31+
jsonDatas: '{"GUID":"f9e9d1d0-e3ec-4c6b-b1c4-e279bd6b8e6f","computeOrder":7,"position":{"serializedVersion":"2","x":762.0,"y":-95.78260040283203,"width":112.00000762939453,"height":149.0},"expanded":false,"debug":false,"nodeLock":false,"output":0.0}'
3232
- type: InspectorNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
33-
jsonDatas: '{"GUID":"345962ab-c23d-4a54-8350-2acd78185e3b","computeOrder":1,"position":{"serializedVersion":"2","x":203.6575164794922,"y":371.1650390625,"width":133.0,"height":77.0},"expanded":true,"debug":false,"nodeLock":false,"input":0.0,"output":0.0,"additionalSettings":false,"additionalParam":""}'
33+
jsonDatas: '{"GUID":"345962ab-c23d-4a54-8350-2acd78185e3b","computeOrder":8,"position":{"serializedVersion":"2","x":203.6575164794922,"y":371.1650390625,"width":133.0,"height":77.0},"expanded":true,"debug":false,"nodeLock":false,"input":0.0,"output":0.0,"additionalSettings":false,"additionalParam":""}'
3434
- type: InspectorNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
35-
jsonDatas: '{"GUID":"c9c02062-b5fb-4df4-920d-c8aaf27cf0ed","computeOrder":1,"position":{"serializedVersion":"2","x":215.49501037597657,"y":500.0350036621094,"width":133.0,"height":77.0},"expanded":true,"debug":false,"nodeLock":false,"input":0.0,"output":0.0,"additionalSettings":true,"additionalParam":"fegewgwgw"}'
35+
jsonDatas: '{"GUID":"c9c02062-b5fb-4df4-920d-c8aaf27cf0ed","computeOrder":9,"position":{"serializedVersion":"2","x":215.49501037597657,"y":500.0350036621094,"width":133.0,"height":77.0},"expanded":true,"debug":false,"nodeLock":false,"input":0.0,"output":0.0,"additionalSettings":true,"additionalParam":"fegewgwgw"}'
3636
- type: InspectorNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
37-
jsonDatas: '{"GUID":"8438c0ea-9d4d-4b50-9c61-13a3f855e828","computeOrder":1,"position":{"serializedVersion":"2","x":492.0,"y":490.0,"width":132.0,"height":77.0},"expanded":true,"debug":false,"nodeLock":false,"input":0.0,"output":0.0,"additionalSettings":false,"additionalParam":"Hello
37+
jsonDatas: '{"GUID":"8438c0ea-9d4d-4b50-9c61-13a3f855e828","computeOrder":10,"position":{"serializedVersion":"2","x":492.0,"y":490.0,"width":132.0,"height":77.0},"expanded":true,"debug":false,"nodeLock":false,"input":0.0,"output":0.0,"additionalSettings":false,"additionalParam":"Hello
3838
World !"}'
3939
edges:
4040
- GUID: 677d1ad1-38e2-46c6-954a-333e2dd6216e
@@ -121,7 +121,7 @@ MonoBehaviour:
121121
serializedType: GraphProcessor.ProcessorView, com.alelievr.NodeGraphProcessor.Editor,
122122
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
123123
exposedParameters: []
124-
position: {x: -83, y: 112, z: 0}
125-
scale: {x: 1, y: 1, z: 1}
124+
position: {x: 128, y: 85, z: 0}
125+
scale: {x: 0.65751624, y: 0.65751624, z: 1}
126126
references:
127127
version: 1

Assets/Examples/Performances/BigComputeOrder.asset

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,10 @@ MonoBehaviour:
409409
jsonDatas: '{"GUID":"64eaf0d3-54b9-4b53-8cc9-0b30c23817ca","computeOrder":194,"position":{"serializedVersion":"2","x":9573.478515625,"y":1833.2176513671875,"width":125.00000762939453,"height":115.00000762939453},"expanded":true,"debug":true,"nodeLock":false,"input":0.0,"output":0.0}'
410410
- type: MultiAddNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
411411
jsonDatas: '{"GUID":"4734d31e-c01c-44c0-a6ed-e14d45ec47b2","computeOrder":190,"position":{"serializedVersion":"2","x":9285.4755859375,"y":1653.2740478515625,"width":139.0,"height":112.0},"expanded":false,"debug":true,"nodeLock":false,"output":0.0}'
412+
- type: FloatNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
413+
jsonDatas: '{"GUID":"0b224563-35b3-4fc9-9d36-83f454e67798","computeOrder":198,"position":{"serializedVersion":"2","x":10010.2880859375,"y":1586.0816650390625,"width":108.00000762939453,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"input":0.0,"output":0.0}'
414+
- type: FloatNode, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
415+
jsonDatas: '{"GUID":"3e6392a2-faee-4160-a298-a9a936f2964d","computeOrder":199,"position":{"serializedVersion":"2","x":10291.8330078125,"y":1657.8289794921875,"width":108.00000762939453,"height":101.0},"expanded":false,"debug":false,"nodeLock":false,"input":0.0,"output":0.0}'
412416
edges:
413417
- GUID: b453089f-109f-4702-aeb0-d9ef2ac8e14f
414418
owner: {fileID: 11400000}
@@ -1546,14 +1550,6 @@ MonoBehaviour:
15461550
outputFieldName: output
15471551
inputPortIdentifier:
15481552
outputPortIdentifier:
1549-
- GUID: d8e2b4f7-765d-4e8b-af2c-6d1810bb001c
1550-
owner: {fileID: 11400000}
1551-
inputNodeGUID: 612fcaa5-c737-4fa7-b128-09def60523a2
1552-
outputNodeGUID: d4048f8e-aef7-49b0-88fe-c97ee898cb6a
1553-
inputFieldName: inputs
1554-
outputFieldName: output
1555-
inputPortIdentifier:
1556-
outputPortIdentifier:
15571553
- GUID: f65a61b0-e770-489f-9ad8-d3c341911002
15581554
owner: {fileID: 11400000}
15591555
inputNodeGUID: b921e1ed-5560-4043-a94d-fc8b96284b13
@@ -2658,14 +2654,6 @@ MonoBehaviour:
26582654
outputFieldName: output
26592655
inputPortIdentifier:
26602656
outputPortIdentifier:
2661-
- GUID: 5488c710-cd2c-4504-bc74-0838536af418
2662-
owner: {fileID: 11400000}
2663-
inputNodeGUID: 09b5bbd1-d7d9-40db-9153-069759cd2cfb
2664-
outputNodeGUID: 6b97f649-62c0-45a2-a1fd-3369f3b10009
2665-
inputFieldName: inputs
2666-
outputFieldName: output
2667-
inputPortIdentifier:
2668-
outputPortIdentifier:
26692657
- GUID: 302052bb-473d-4bc5-94de-03dcd484c743
26702658
owner: {fileID: 11400000}
26712659
inputNodeGUID: 6b97f649-62c0-45a2-a1fd-3369f3b10009
@@ -2706,6 +2694,38 @@ MonoBehaviour:
27062694
outputFieldName: output
27072695
inputPortIdentifier:
27082696
outputPortIdentifier:
2697+
- GUID: 00d8a3f3-e3e1-4fbb-b112-56098e2c0f2e
2698+
owner: {fileID: 11400000}
2699+
inputNodeGUID: 09b5bbd1-d7d9-40db-9153-069759cd2cfb
2700+
outputNodeGUID: 6b97f649-62c0-45a2-a1fd-3369f3b10009
2701+
inputFieldName: inputs
2702+
outputFieldName: output
2703+
inputPortIdentifier:
2704+
outputPortIdentifier:
2705+
- GUID: bf0ab7df-4876-4e67-8f46-03120c5445c3
2706+
owner: {fileID: 11400000}
2707+
inputNodeGUID: 0b224563-35b3-4fc9-9d36-83f454e67798
2708+
outputNodeGUID: 09b5bbd1-d7d9-40db-9153-069759cd2cfb
2709+
inputFieldName: input
2710+
outputFieldName: output
2711+
inputPortIdentifier:
2712+
outputPortIdentifier:
2713+
- GUID: e371a99d-810a-456b-a81d-5b787e2a156d
2714+
owner: {fileID: 11400000}
2715+
inputNodeGUID: 3e6392a2-faee-4160-a298-a9a936f2964d
2716+
outputNodeGUID: 0b224563-35b3-4fc9-9d36-83f454e67798
2717+
inputFieldName: input
2718+
outputFieldName: output
2719+
inputPortIdentifier:
2720+
outputPortIdentifier:
2721+
- GUID: d7b6a311-d980-4c1c-8019-f9c044759ecc
2722+
owner: {fileID: 11400000}
2723+
inputNodeGUID: 612fcaa5-c737-4fa7-b128-09def60523a2
2724+
outputNodeGUID: d4048f8e-aef7-49b0-88fe-c97ee898cb6a
2725+
inputFieldName: inputs
2726+
outputFieldName: output
2727+
inputPortIdentifier:
2728+
outputPortIdentifier:
27092729
groups: []
27102730
stackNodes: []
27112731
pinnedElements:
@@ -2715,12 +2735,12 @@ MonoBehaviour:
27152735
y: 20
27162736
width: 150
27172737
height: 200
2718-
opened: 1
2738+
opened: 0
27192739
editorType:
27202740
serializedType: GraphProcessor.ExposedParameterView, com.alelievr.NodeGraphProcessor.Editor,
27212741
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
27222742
exposedParameters: []
2723-
position: {x: -5924, y: -743, z: 0}
2724-
scale: {x: 0.65751624, y: 0.65751624, z: 1}
2743+
position: {x: -1083, y: -2103, z: 0}
2744+
scale: {x: 0.7561437, y: 0.7561437, z: 1}
27252745
references:
27262746
version: 1

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,18 @@ void UnserializeAndPasteCallback(string operationName, string serializedData)
232232
group.innerNodeGUIDs.Clear();
233233
foreach (var guid in oldGUIDList)
234234
{
235-
var node = graph.nodesPerGUID[guid];
236-
group.innerNodeGUIDs.Add(copiedNodesMap[node.GUID].GUID);
235+
graph.nodesPerGUID.TryGetValue(guid, out var node);
236+
237+
// In case group was copied from another graph
238+
if (node == null)
239+
{
240+
copiedNodesMap.TryGetValue(guid, out node);
241+
group.innerNodeGUIDs.Add(node.GUID);
242+
}
243+
else
244+
{
245+
group.innerNodeGUIDs.Add(copiedNodesMap[guid].GUID);
246+
}
237247
}
238248

239249
AddGroup(group);

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,28 @@ All notable changes to this package will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
55
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
66

7+
## [0.8.0]
8+
9+
### Added
10+
- Depth first compute order (enabled by default) instead of breadth first
11+
- Cycle detection in the graph, cyclic nodes are now marked with a compute order of -2
12+
- Added a node create menu when dropping an edge in the graph that also connects the edge to the new node (like in ShaderGraph or VFX Graph)
13+
- Added ITypeAdapter.GetIncompatibleTypes to list all the incompatible types (prevent automatic casting / unwanted connectable ports, can be used to exclude a conversion to System.Object for example)
14+
- Added a node inspector to show advanced settings in the inspector, see `ShowInInspector.cs` and `DrawDefaultInspector(bool fromInspector)` for more details.
15+
16+
### Changed
17+
- Improved a lot the edge connection behavior for both input and output ports
18+
- Improved domain reload performances by using `TypeCache` when possible
19+
- Node copy/pasting now keeps the connected edges
20+
- Copy/paste now works between multiple graph windows
21+
- Copy/paste now supports node groups
22+
23+
### Fixed
24+
- Fixed delete of multiple relay node at the same time breaking the graph
25+
- Fixed undo event not being unregistered when closing the graph
26+
- Fixed undo on parameter creation / deletion
27+
- Fixed toolbar AddButtons deleting existing buttons
28+
729
## [0.7.1]
830

931
### Added

0 commit comments

Comments
 (0)