diff --git a/Source/Editor/Surface/Archetypes/BehaviorTree.cs b/Source/Editor/Surface/Archetypes/BehaviorTree.cs index 8ca466423..e055d584d 100644 --- a/Source/Editor/Surface/Archetypes/BehaviorTree.cs +++ b/Source/Editor/Surface/Archetypes/BehaviorTree.cs @@ -27,6 +27,7 @@ namespace FlaxEditor.Surface.Archetypes private ScriptType _type; private InputBox _input; private OutputBox _output; + internal bool _isValueEditing; public BehaviorTreeNode Instance; @@ -172,6 +173,13 @@ namespace FlaxEditor.Surface.Archetypes { base.OnValuesChanged(); + if (_isValueEditing) + { + // Skip updating instance when it's being edited by user via UI + UpdateTitle(); + return; + } + try { if (Instance != null) diff --git a/Source/Editor/Windows/Assets/BehaviorTreeWindow.cs b/Source/Editor/Windows/Assets/BehaviorTreeWindow.cs index 7c5ff57a4..8213a4dd7 100644 --- a/Source/Editor/Windows/Assets/BehaviorTreeWindow.cs +++ b/Source/Editor/Windows/Assets/BehaviorTreeWindow.cs @@ -61,7 +61,7 @@ namespace FlaxEditor.Windows.Assets _undo = new Undo(); _undo.UndoDone += OnUndoRedo; _undo.RedoDone += OnUndoRedo; - _undo.ActionDone += OnUndoRedo; + _undo.ActionDone += OnUndoAction; // Split Panels _split1 = new SplitPanel(Orientation.Horizontal, ScrollBars.None, ScrollBars.None) @@ -120,6 +120,12 @@ namespace FlaxEditor.Windows.Assets _nodePropertiesEditor.BuildLayoutOnUpdate(); } + private void OnUndoAction(IUndoAction action) + { + MarkAsEdited(); + UpdateToolstrip(); + } + private void OnNodeSelectionChanged() { // Select node instances to view/edit @@ -149,7 +155,9 @@ namespace FlaxEditor.Windows.Assets { if (nodes[j] is Surface.Archetypes.BehaviorTree.Node node && node.Instance == instance) { + node._isValueEditing = true; node.SetValue(1, FlaxEngine.Json.JsonSerializer.SaveToBytes(instance)); + node._isValueEditing = false; break; } }