diff --git a/Scripts/Editor/NodeEditor.cs b/Scripts/Editor/NodeEditor.cs index ea07d45..0bd667a 100644 --- a/Scripts/Editor/NodeEditor.cs +++ b/Scripts/Editor/NodeEditor.cs @@ -24,7 +24,7 @@ namespace XNodeEditor { internal static bool inNodeEditor = false; #endif private List _excludesField; - public sealed override void OnCreate() + public override void OnCreate() { _excludesField = new List { "m_Script", "graph", "position", "ports" }; @@ -34,12 +34,6 @@ namespace XNodeEditor { { _excludesField.AddRange(fields); } - - Init(); - } - - protected virtual void Init() - { } public virtual void OnHeaderGUI() { diff --git a/Scripts/Editor/NodeEditorBase.cs b/Scripts/Editor/NodeEditorBase.cs index 1fc28c7..8133d66 100644 --- a/Scripts/Editor/NodeEditorBase.cs +++ b/Scripts/Editor/NodeEditorBase.cs @@ -50,6 +50,7 @@ namespace XNodeEditor.Internal { editor.serializedObject = new SerializedObject(target); editor.window = window; editor.OnCreate(); + editor.OnInit(); editors.Add(target, editor); } if (editor.target == null) editor.target = target; @@ -84,6 +85,11 @@ namespace XNodeEditor.Internal { /// Called on creation, after references have been set public virtual void OnCreate() { } + /// + /// node editor window OnFocus call + /// + public virtual void OnInit() { } + public interface INodeEditorAttrib { Type GetInspectedType(); } diff --git a/Scripts/Editor/NodeEditorWindow.cs b/Scripts/Editor/NodeEditorWindow.cs index a1b222d..8c8f8bb 100644 --- a/Scripts/Editor/NodeEditorWindow.cs +++ b/Scripts/Editor/NodeEditorWindow.cs @@ -106,6 +106,7 @@ namespace XNodeEditor { void OnFocus() { current = this; ValidateGraphEditor(); + graphEditor?.OnFocus(); if (graphEditor != null && NodeEditorPreferences.GetSettings().autoSave) AssetDatabase.SaveAssets(); } diff --git a/Scripts/Editor/NodeGraphEditor.cs b/Scripts/Editor/NodeGraphEditor.cs index 2dc444b..95a7cdd 100644 --- a/Scripts/Editor/NodeGraphEditor.cs +++ b/Scripts/Editor/NodeGraphEditor.cs @@ -264,6 +264,15 @@ namespace XNodeEditor { /// Called when opened by NodeEditorWindow public virtual void OnOpen() { } + public virtual void OnFocus() + { + foreach (var targetNode in target.nodes) + { + var editor = NodeEditor.GetEditor(targetNode, window); + editor.OnInit(); + } + } + public virtual Texture2D GetGridTexture() { return NodeEditorPreferences.GetSettings().gridTexture; }