using System; using System.Linq; using Artemis.Core; namespace Artemis.UI.Shared.Services.NodeEditor.Commands; /// /// Represents a node editor command that can be used to add a node. /// public class AddNode : INodeEditorCommand, IDisposable { private readonly INode _node; private readonly INodeScript _nodeScript; private bool _isRemoved; /// /// Creates a new instance of the class. /// /// The node script the node belongs to. /// The node to delete. public AddNode(INodeScript nodeScript, INode node) { _nodeScript = nodeScript; _node = node; } /// public void Dispose() { if (_isRemoved && _node is IDisposable disposableNode) disposableNode.Dispose(); } /// public string DisplayName => $"Add '{_node.Name}' node"; /// public void Execute() { if (!_nodeScript.Nodes.Contains(_node)) _nodeScript.AddNode(_node); _isRemoved = false; } /// public void Undo() { _nodeScript.RemoveNode(_node); _isRemoved = true; } }