namespace Unity.VisualScripting { /// /// Inverts the value of a boolean. /// [UnitCategory("Logic")] [UnitOrder(3)] public sealed class Negate : Unit { /// /// The input boolean. /// [DoNotSerialize] [PortLabel("X")] public ValueInput input { get; private set; } /// /// True if the input is false, false if the input is true. /// [DoNotSerialize] [PortLabel("~X")] public ValueOutput output { get; private set; } protected override void Definition() { input = ValueInput(nameof(input)); output = ValueOutput(nameof(output), Operation).Predictable(); Requirement(input, output); } public bool Operation(Flow flow) { return !flow.GetValue(input); } } }