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;
}
}