diff --git a/Scripts/Editor/NodeEditorBase.cs b/Scripts/Editor/NodeEditorBase.cs
index e556a10..c543ad0 100644
--- a/Scripts/Editor/NodeEditorBase.cs
+++ b/Scripts/Editor/NodeEditorBase.cs
@@ -49,8 +49,14 @@ namespace XNodeEditor.Internal {
editor.target = target;
editor.serializedObject = new SerializedObject(target);
editor.window = window;
+
+ // OnCreate is obsolete - use OnEnable instead
+#pragma warning disable 0618
editor.OnCreate();
+#pragma warning restore 0618
+
editors.Add(target, editor);
+ editor.OnEnable();
}
if (editor.target == null) editor.target = target;
if (editor.window != window) editor.window = window;
@@ -91,9 +97,18 @@ namespace XNodeEditor.Internal {
}
}
+ /// Clears stored editors. Called when a new graph opens. Ensures that NodeEditor.OnEnable is called as expected.
+ public static void ClearCachedEditors() {
+ editors = new Dictionary();
+ }
+
/// Called on creation, after references have been set
+ [Obsolete("OnCreate() is deprecated, please use OnEnable() instead.")]
public virtual void OnCreate() { }
+ /// Called when a graph containing the node is opened
+ public virtual void OnEnable() { }
+
public interface INodeEditorAttrib {
Type GetInspectedType();
}
diff --git a/Scripts/Editor/NodeEditorWindow.cs b/Scripts/Editor/NodeEditorWindow.cs
index a7ec96b..65bcafd 100644
--- a/Scripts/Editor/NodeEditorWindow.cs
+++ b/Scripts/Editor/NodeEditorWindow.cs
@@ -55,6 +55,7 @@ namespace XNodeEditor {
}
private void OnEnable() {
+ NodeEditor.ClearCachedEditors();
// Reload portConnectionPoints if there are any
int length = _references.Length;
if (length == _rects.Length) {
@@ -202,6 +203,7 @@ namespace XNodeEditor {
NodeEditorWindow w = GetWindow(typeof(NodeEditorWindow), false, "xNode", true) as NodeEditorWindow;
w.wantsMouseMove = true;
w.graph = graph;
+ NodeEditor.ClearCachedEditors();
return w;
}