From f00b957e0439f784c92993ba626ef2883218fbce Mon Sep 17 00:00:00 2001 From: Thor Brigsted Date: Fri, 22 Sep 2017 13:41:09 +0200 Subject: [PATCH] Removed NodeGraphAsset. Made NodeGraph into a ScriptableObject Runtime serialization will have to wait. --- Examples/NewNodeGraph.asset | Bin 5532 -> 0 bytes Examples/NewNodeGraph.asset.meta | 9 --------- Scripts/Editor/NodeEditor.cs | 1 + Scripts/Editor/NodeEditorWindow.cs | 28 ++++++++++------------------ Scripts/NodeGraph.cs | 4 ++-- Scripts/NodeGraphAsset.cs | 13 ------------- Scripts/NodeGraphAsset.cs.meta | 12 ------------ 7 files changed, 13 insertions(+), 54 deletions(-) delete mode 100644 Examples/NewNodeGraph.asset delete mode 100644 Examples/NewNodeGraph.asset.meta delete mode 100644 Scripts/NodeGraphAsset.cs delete mode 100644 Scripts/NodeGraphAsset.cs.meta diff --git a/Examples/NewNodeGraph.asset b/Examples/NewNodeGraph.asset deleted file mode 100644 index 62d3ed1080711e2ddbe61dec206acc7a2f8a076b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5532 zcmeHLOKcNI7@mz=prz&2raXcK?5Rk>T5r1S zM&{CFGPO;`6nENQQBU{3$ zJOut3+8$Jm_pnFc_zGjPPsQ*wcn)B^C7NsTeAmO845MY!Ez) z5fAw|uI4)9`6PzNc|L992KxnZ7QjRCZ6yv6wRAWOoc2X~ZpB}L-=~q^&w*1hph!Ia zZ3@$P-0$`_Zm=`(dj~wEKPA>^DtjXXJ*g6ooHJvL@RZ{3!y1Zb7vZX=*d^F5pwjq@ zHm>;xBK|K4Z#F5;4*p)k#|ZD_r+i|m!sGnA+qmZc8e@uc4_cVN#lIKudhzcgT-DC_ z`yzaDQU*s)mR;!wCzmA`q3erdtXe$fdOSCQ&ZHwN=oA-1UnnLl99#Vjzq;I_lZB$4 zF!p%m_x6}=S^Z&V_w3~OkF{4%Dogi%rBj=fM1e$sM1e$sM1e$sM1e$sM1e$sM1lW_ z0`$(ILT&4_%PTdWH%Ig4c|5FW zMc(Ysn>9alC7xcGfnCT0*YVtIygb7LdXcFGwz6DC|A?I(NLyI8q6S0XsKJt3mK6ZD zWvOw6yYm$ZAdC41tX)y7%MidUd=!OK)qxyWyhSdYs~#_7S_X9v^J3WzcqxjCyp?<* zG?1H6G=)Zg2h;cmFcsjyugi5KoZ?~K!%iru?qO!u3o}waH-Wv8LCp`O8d!}&gZzem zmCra{o%EoMR*{-0PgcY1e=Bw4PRQRgb%Q!rI&s!J5|n2oZ4ac$M(D|NoypRs;G}5T~0p`s!-1Gc{bzG){qlcBR zlJ8*#$00xiX|ZM=J$+rSwtJ51Wo=v}%d&@tEjydFMko)CaI2UEL$@nhEuN?ci*%Ui zqII*BuDXLdfW_7cRDro-+Vj5^IXXD>Ju`GW3n+{dfP2udi0+!TltRp z(!iU(D8u+`DBw9U=L%QSake$)hd7gOfK$G7=sR*TD07m2khEOnB`qa=(T0>?qS3u; My4Pr!g$84<0af8bbN~PV diff --git a/Examples/NewNodeGraph.asset.meta b/Examples/NewNodeGraph.asset.meta deleted file mode 100644 index fc8326b..0000000 --- a/Examples/NewNodeGraph.asset.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 1452552e49747df45b25f74d307c25b6 -timeCreated: 1506021986 -licenseType: Free -NativeFormatImporter: - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Scripts/Editor/NodeEditor.cs b/Scripts/Editor/NodeEditor.cs index ca6e1ad..f763f3b 100644 --- a/Scripts/Editor/NodeEditor.cs +++ b/Scripts/Editor/NodeEditor.cs @@ -74,6 +74,7 @@ public class NodeEditor { if (fieldValue != curve) fields[i].SetValue(target, curve); } else if (fieldType.IsSubclassOf(typeof(UnityEngine.Object)) || fieldType == typeof(UnityEngine.Object)) { + if (fieldName == "graph") continue; //Ignore 'graph' fieldValue = EditorGUILayout.ObjectField(fieldName, (UnityEngine.Object)fieldValue, fieldType, true); } diff --git a/Scripts/Editor/NodeEditorWindow.cs b/Scripts/Editor/NodeEditorWindow.cs index d830e7d..7928030 100644 --- a/Scripts/Editor/NodeEditorWindow.cs +++ b/Scripts/Editor/NodeEditorWindow.cs @@ -11,8 +11,7 @@ public partial class NodeEditorWindow : EditorWindow { public Dictionary portConnectionPoints { get { return _portConnectionPoints; } } private Dictionary _portConnectionPoints = new Dictionary(); private Dictionary portRects = new Dictionary(); - public NodeGraphAsset graphAsset; - public NodeGraph graph { get { return _graph != null ? _graph : _graph = new NodeGraph(); } } + public NodeGraph graph { get { return _graph != null ? _graph : _graph = CreateInstance(); } } public NodeGraph _graph; public Vector2 panOffset { get { return _panOffset; } set { _panOffset = value; Repaint(); } } private Vector2 _panOffset; @@ -31,10 +30,8 @@ public partial class NodeEditorWindow : EditorWindow { } public void Save() { - if (graphAsset == null) SaveAs(); - else if (AssetDatabase.Contains(graphAsset)) { - graphAsset.json = graph.Serialize(); - EditorUtility.SetDirty(graphAsset); + if (AssetDatabase.Contains(_graph)) { + EditorUtility.SetDirty(_graph); AssetDatabase.SaveAssets(); } else SaveAs(); @@ -44,14 +41,10 @@ public partial class NodeEditorWindow : EditorWindow { string path = EditorUtility.SaveFilePanelInProject("Save NodeGraph", "NewNodeGraph", "asset", ""); if (string.IsNullOrEmpty(path)) return; else { - NodeGraphAsset existingGraphAsset = AssetDatabase.LoadAssetAtPath(path); - if (existingGraphAsset != null) graphAsset = existingGraphAsset; - else { - graphAsset = new NodeGraphAsset(); - AssetDatabase.CreateAsset(graphAsset, path); - } - graphAsset.json = graph.Serialize(); - EditorUtility.SetDirty(graphAsset); + NodeGraph existingGraph = AssetDatabase.LoadAssetAtPath(path); + if (existingGraph != null) AssetDatabase.DeleteAsset(path); + AssetDatabase.CreateAsset(_graph, path); + EditorUtility.SetDirty(_graph); AssetDatabase.SaveAssets(); } } @@ -85,11 +78,10 @@ public partial class NodeEditorWindow : EditorWindow { [OnOpenAsset(0)] public static bool OnOpen(int instanceID, int line) { - NodeGraphAsset nodeGraphAsset = EditorUtility.InstanceIDToObject(instanceID) as NodeGraphAsset; - if (nodeGraphAsset != null) { + NodeGraph nodeGraph = EditorUtility.InstanceIDToObject(instanceID) as NodeGraph; + if (nodeGraph != null) { NodeEditorWindow w = Init(); - w.graphAsset = nodeGraphAsset; - w._graph = nodeGraphAsset.nodeGraph; + w._graph = nodeGraph; return true; } return false; diff --git a/Scripts/NodeGraph.cs b/Scripts/NodeGraph.cs index ca76749..4ceb107 100644 --- a/Scripts/NodeGraph.cs +++ b/Scripts/NodeGraph.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using UnityEngine; using System; /// Base class for all node graphs -[Serializable] -public class NodeGraph { +[Serializable, CreateAssetMenu(fileName = "NewNodeGraph", menuName = "Node Graph")] +public class NodeGraph : ScriptableObject { /// All nodes in the graph. /// See: [NonSerialized] public List nodes = new List(); diff --git a/Scripts/NodeGraphAsset.cs b/Scripts/NodeGraphAsset.cs deleted file mode 100644 index d9b2906..0000000 --- a/Scripts/NodeGraphAsset.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using System; - -[CreateAssetMenu(fileName = "NewNodeGraph", menuName = "Node Graph")] -public class NodeGraphAsset : ScriptableObject { - public string json { get { return _json; } set { _json = value; _nodeGraph = null; } } - [SerializeField] private string _json; - - public NodeGraph nodeGraph { get { return _nodeGraph != null ? _nodeGraph : _nodeGraph = NodeGraph.Deserialize(json); } } - [NonSerialized] private NodeGraph _nodeGraph = null; -} diff --git a/Scripts/NodeGraphAsset.cs.meta b/Scripts/NodeGraphAsset.cs.meta deleted file mode 100644 index 718d0eb..0000000 --- a/Scripts/NodeGraphAsset.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 803fd86571b50524f807cf1e86777b1a -timeCreated: 1506020816 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: