using System; using System.Collections.Generic; using System.ComponentModel; using Artemis.Core.Events; namespace Artemis.Core; /// /// Represents a kind of node inside a /// public interface INode : INotifyPropertyChanged, IBreakableModel, IPluginFeatureDependent { /// /// Gets or sets the ID of the node. /// Guid Id { get; set; } /// /// Gets or sets the node data with information about this node /// NodeData? NodeData { get; set; } /// /// Gets the name of the node /// string Name { get; set; } /// /// Gets the description of the node /// string Description { get; set; } /// /// Gets a boolean indicating whether the node is the exit node of the script /// bool IsExitNode { get; } /// /// Gets a boolean indicating whether the node is a default node that connot be removed /// bool IsDefaultNode { get; } /// /// Gets or sets the X-position of the node /// public double X { get; set; } /// /// Gets or sets the Y-position of the node /// public double Y { get; set; } /// /// Gets or sets the help URL of the node /// string HelpUrl { get; set; } /// /// Gets a read-only collection of the pins on this node /// public IReadOnlyCollection Pins { get; } /// /// Gets a read-only collection of the pin collections on this node /// public IReadOnlyCollection PinCollections { get; } /// /// Called when the node resets /// event EventHandler Resetting; /// /// Occurs when a pin was added to the node /// event EventHandler> PinAdded; /// /// Occurs when a pin was removed from the node /// event EventHandler> PinRemoved; /// /// Occurs when a pin collection was added to the node /// event EventHandler> PinCollectionAdded; /// /// Occurs when a pin was removed from the node /// event EventHandler> PinCollectionRemoved; /// /// Attempts to initialize the node. /// /// The script the node is contained in void TryInitialize(INodeScript script); /// /// Attempts to evaluate the value of the output pins of this node /// void TryEvaluate(); /// /// Resets the node causing all pins to re-evaluate the next time is called /// void Reset(); }