using Artemis.Core; using Artemis.Core.Events; using Artemis.VisualScripting.Nodes.Operators.Screens; namespace Artemis.VisualScripting.Nodes.Operators; [Node("Enum Equals", "Determines the equality between an input and a selected enum value", "Operators", InputType = typeof(Enum), OutputType = typeof(bool))] public class EnumEqualsNode : Node { public EnumEqualsNode() : base("Enum Equals", "Determines the equality between an input and a selected enum value") { InputPin = CreateInputPin(); OutputPin = CreateOutputPin(); InputPin.PinConnected += InputPinOnPinConnected; } private void InputPinOnPinConnected(object? sender, SingleValueEventArgs e) { if (Storage?.GetType() != InputPin.ConnectedTo.First().Type) Storage = Enum.GetValues(InputPin.ConnectedTo.First().Type).Cast().FirstOrDefault(); } public InputPin InputPin { get; } public OutputPin OutputPin { get; } #region Overrides of Node /// public override void Evaluate() { OutputPin.Value = InputPin.Value != null && InputPin.Value.Equals(Storage); } #endregion }