diff --git a/Resources/New Node Data Cache.asset b/Resources/New Node Data Cache.asset
new file mode 100644
index 0000000..98c7f5f
Binary files /dev/null and b/Resources/New Node Data Cache.asset differ
diff --git a/Resources/NodeDataCache.asset.meta b/Resources/New Node Data Cache.asset.meta
similarity index 61%
rename from Resources/NodeDataCache.asset.meta
rename to Resources/New Node Data Cache.asset.meta
index cd7469f..830cf51 100644
--- a/Resources/NodeDataCache.asset.meta
+++ b/Resources/New Node Data Cache.asset.meta
@@ -1,7 +1,7 @@
fileFormatVersion: 2
-guid: a6799b9b87b05a14f9053390f4500d7b
-timeCreated: 1507567505
-licenseType: Free
+guid: a05ee176e92214f48a94c321dad1614d
+timeCreated: 1507703437
+licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 11400000
userData:
diff --git a/Resources/NodeDataCache.asset b/Resources/NodeDataCache.asset
deleted file mode 100644
index dbef4f7..0000000
--- a/Resources/NodeDataCache.asset
+++ /dev/null
@@ -1,14 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!114 &11400000
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_GameObject: {fileID: 0}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: a6399826e2c44b447b32a3ed06646162, type: 3}
- m_Name: NodeDataCache
- m_EditorClassIdentifier:
- nodes: []
diff --git a/Scripts/NodeDataCache.cs b/Scripts/NodeDataCache.cs
index 61aa3db..aa02cd1 100644
--- a/Scripts/NodeDataCache.cs
+++ b/Scripts/NodeDataCache.cs
@@ -14,30 +14,36 @@ public sealed class NodeDataCache : ScriptableObject {
}
}
public static NodeDataCache _instance;
+ public static bool Initialized { get { return _instance != null; } }
[SerializeField]
private PortDataCache portDataCache = new PortDataCache();
+
/// Return port data from cache
public static void GetPorts(Node node, ref List inputs, ref List outputs) {
- //if (_instance == null) Resources.FindObjectsOfTypeAll()[0];
+ if (!Initialized) Initialize();
System.Type nodeType = node.GetType();
inputs = new List();
outputs = new List();
- if (!instance.portDataCache.ContainsKey(nodeType)) return;
- for (int i = 0; i < instance.portDataCache[nodeType].Count; i++) {
- if (instance.portDataCache[nodeType][i].direction == NodePort.IO.Input) inputs.Add(new NodePort(instance.portDataCache[nodeType][i], node));
- else outputs.Add(new NodePort(instance.portDataCache[nodeType][i], node));
+ if (!_instance.portDataCache.ContainsKey(nodeType)) return;
+ for (int i = 0; i < _instance.portDataCache[nodeType].Count; i++) {
+ if (_instance.portDataCache[nodeType][i].direction == NodePort.IO.Input) inputs.Add(new NodePort(_instance.portDataCache[nodeType][i], node));
+ else outputs.Add(new NodePort(_instance.portDataCache[nodeType][i], node));
}
}
-
+
+ public static void Initialize() {
+ _instance = Resources.LoadAll("").FirstOrDefault();
+ }
+
#if UNITY_EDITOR
- [UnityEditor.InitializeOnLoadMethod( )]
-#endif
- private static void Init() {
- Debug.Log("Init");
+ [UnityEditor.Callbacks.DidReloadScripts]
+ private static void Reload() {
+ Initialize();
instance.BuildCache();
}
+#endif
private void BuildCache() {
System.Type baseType = typeof(Node);
diff --git a/Scripts/NodeGraph.cs b/Scripts/NodeGraph.cs
index 58baa23..878a6f0 100644
--- a/Scripts/NodeGraph.cs
+++ b/Scripts/NodeGraph.cs
@@ -1,5 +1,4 @@
-using System.Collections;
-using System.Collections.Generic;
+using System.Collections.Generic;
using UnityEngine;
using System;
@@ -16,6 +15,7 @@ public abstract class NodeGraph : ScriptableObject, ISerializationCallbackReceiv
}
public virtual Node AddNode(Type type) {
+ if (!NodeDataCache.Initialized) NodeDataCache.Initialize();
Node node = ScriptableObject.CreateInstance(type) as Node;
#if UNITY_EDITOR
if (!Application.isPlaying) {