From ffc061f64ebe5e4572a7dcb69f7d160492cfe0e6 Mon Sep 17 00:00:00 2001 From: phoenixanimations Date: Sun, 26 Aug 2018 22:55:57 -0400 Subject: [PATCH] Update NodeEditor.cs I initially found out about this through https://docs.unity3d.com/ScriptReference/Editor.html specifically these two comments: ```csharp // Update the serializedProperty - always do this in the beginning of OnInspectorGUI. serializedObject.Update (); ... // Apply changes to the serializedProperty - always do this in the end of OnInspectorGUI. serializedObject.ApplyModifiedProperties (); ``` I'm assuming, although I don't know for sure, that since OnBodyGUI displays the serialize objects in the custom inspector, that it must follow the same rules as well. Either way these lines of code solve for me the glitch: pressing undo while typing and getting a disconnect between the node and the inspector. --- Scripts/Editor/NodeEditor.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Scripts/Editor/NodeEditor.cs b/Scripts/Editor/NodeEditor.cs index 475a3b6..a00704a 100644 --- a/Scripts/Editor/NodeEditor.cs +++ b/Scripts/Editor/NodeEditor.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using UnityEditor; @@ -43,6 +43,10 @@ namespace XNodeEditor { /// Draws standard field editors for all public fields public virtual void OnBodyGUI() { + // Unity specifically requires this to save/update any serial object. + // serializedObject.Update(); must go at the start of an inspector gui, and + // serializedObject.ApplyModifiedProperties(); goes at the end. + serializedObject.Update(); string[] excludes = { "m_Script", "graph", "position", "ports" }; portPositions = new Dictionary(); @@ -54,6 +58,7 @@ namespace XNodeEditor { if (excludes.Contains(iterator.name)) continue; NodeEditorGUILayout.PropertyField(iterator, true); } + serializedObject.ApplyModifiedProperties(); } public virtual int GetWidth() { @@ -93,4 +98,5 @@ namespace XNodeEditor { } } } -} \ No newline at end of file + +}