diff --git a/src/Artemis.Core/Models/Profile/DataBindings/DataBinding.cs b/src/Artemis.Core/Models/Profile/DataBindings/DataBinding.cs index bfe24e220..2b67187f6 100644 --- a/src/Artemis.Core/Models/Profile/DataBindings/DataBinding.cs +++ b/src/Artemis.Core/Models/Profile/DataBindings/DataBinding.cs @@ -234,7 +234,7 @@ namespace Artemis.Core Script.Save(); Entity.IsEnabled = IsEnabled; - Entity.NodeScript = Script?.Entity; + Entity.NodeScript = Script.Entity.Nodes.Any() ? Script.Entity : null; } #endregion diff --git a/src/Artemis.Core/VisualScripting/NodeScript.cs b/src/Artemis.Core/VisualScripting/NodeScript.cs index 5c5b1188e..2f367bd7c 100644 --- a/src/Artemis.Core/VisualScripting/NodeScript.cs +++ b/src/Artemis.Core/VisualScripting/NodeScript.cs @@ -83,6 +83,9 @@ namespace Artemis.Core { _nodes.Remove(node); + if (node is IDisposable disposable) + disposable.Dispose(); + NodeRemoved?.Invoke(this, node); } @@ -105,7 +108,9 @@ namespace Artemis.Core /// public void Load() { - _nodes.Clear(); + List removeNodes = _nodes.Where(n => !n.IsExitNode).ToList(); + foreach (INode removeNode in removeNodes) + RemoveNode(removeNode); // Create nodes foreach (NodeEntity entityNode in Entity.Nodes) @@ -113,7 +118,9 @@ namespace Artemis.Core INode? node = LoadNode(entityNode, entityNode.IsExitNode ? ExitNode : null); if (node == null) continue; - _nodes.Add(node); + + if (!entityNode.IsExitNode) + AddNode(node); } LoadConnections(); diff --git a/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowView.xaml b/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowView.xaml index ffa9fb687..d640e96b9 100644 --- a/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowView.xaml +++ b/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowView.xaml @@ -28,8 +28,9 @@ - - + \ No newline at end of file diff --git a/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowViewModel.cs b/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowViewModel.cs index e0b6185dc..bf6358bb5 100644 --- a/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowViewModel.cs +++ b/src/Artemis.UI/Screens/ProfileEditor/Windows/NodeScriptWindowViewModel.cs @@ -6,13 +6,15 @@ namespace Artemis.UI.Screens.ProfileEditor.Windows { public class NodeScriptWindowViewModel : Screen { - public NodeScriptWindowViewModel(NodeScript nodeScript, INodeService nodeService) + public NodeScriptWindowViewModel(NodeScript nodeScript, INodeService nodeService, ISettingsService settingsService) { NodeScript = nodeScript; AvailableNodes = new BindableCollection(nodeService.AvailableNodes); + AlwaysShowValues = settingsService.GetSetting("ProfileEditor.AlwaysShowValues", true); } public NodeScript NodeScript { get; } public BindableCollection AvailableNodes { get; } + public PluginSetting AlwaysShowValues { get; } } }