Sign


Node Information
Returns a value indicating the sign of the specified number.
General Information
• This node doesn't have other available options.
• Some of the ports of this node can change their types and accept types automatically.
Visual
Visual

Ports
Text Type DataType Accepts IsList CustomAcception
A IN Int32 ONE FALSE TRUE
Result OUT Int32 MULTIPLE FALSE FALSE

Source
namespace Korduene.KGraph.Nodes.Math
{
    [IsNode("Sign")]
    public class MathSign : Node
    {
        Port a = new Port(PortType.IN, typeof(int), AcceptsLinks.ONE, "A");
        Port res = new Port(PortType.OUT, typeof(int), AcceptsLinks.MULTIPLE, "Result");
        public MathSign()
        {
            NodeType = KGraph.NodeType.Function;
            ReturnType = typeof(int);
            a.Value = "0";
            res.Value = "0";
            this.Name = "Sign";
            this.AddPort(a);
            this.AddPort(res);
            Information = "Returns a value indicating the sign of the specified number.";
            a.CustomAcception = Accepts;
        }
        private bool Accepts(Port port)
        {
            if (port == null)
            {
                return false;
            }
            if (a.IsConnected || res.IsConnected)
            {
                if (port.DataType == a.DataType)
                {
                    return true;
                }
            }
            else if (GraphCore.IsNumeric(port.DataType))
            {
                ReturnType = port.DataType;
                a.DataType = port.DataType;
                a.Refresh();
                res.DataType = port.DataType;
                res.Refresh();
                return true;
            }
            if (GraphCore.CanConvert(port.DataType, res.DataType))
            {
                return true;
            }
            return false;
        }
        public override string Code()
        {
            return "return Math.Sign(" + GetValue(a) + ");";
        }
    }
}