Custom Nodes


You can create custom nodes to use in Korduene graph, you can create any type of nodes that function in any way you wish. The generated code will be in plain text, reason for this is because Nodes are meant to produce code in any way you want and any language you specify. This method might be a bit unorthodox, but it's easier to write your code as text rather than defining languages and rules.

Node Attributes
IsNode: This is a Korduene specifice attribute, your node classes should have IsNode attribute for Korduene to reconize them as nodes and not mix them with other classes in your extension.
Node Types
Unspecified: This is a default type the compiler ignores, this type is used for quick functions in port Instructions.
Method: Produced code will be put into a method and method name will be based on the node ID.
MethodCode: Custom method that the user can change the containing code.
Function: Produced code will put into a function with the type that is specified in node ReturnType.
Variable: A variable will be created based on the node ReturnType and code value will be stored in Code method.
KeyDownEvent: Will create a condition in Form KeyDown method and fire connected methods.
SystemEvent: Code produced will be put into WndProc method and based on specified conditions it will call out connected methods.
ObjectReference: A reference to an object, if it has any code it will be put in Form initializing method.
NewObject: Creates a new object and if any of its properties is set, it will be put in Form initializing method.
FunctionCode: Custom function that the user can change the containing code.
MultiVariable: Containing multiple combined variables.
Unspecified (Port Instructions) (Example)
[IsNode("Exit Application")]
public class ExitApplication : Node
{
    Port run = new Port(PortType.IN, typeof(RUN), AcceptsLinks.MULTIPLE,  "Exit");
    public ExitApplication()
    {
        this.Name = "Exit Application";
        AddPort(run);
        run.Instructions = "Application.Exit();";
        Information = "Exits the application. This will exits the application completely and closes all open forms.";
    }
}
Method (Example)
[IsNode("Go Home")]
public class MyNode : Node
{
    Port p1 = new Port(PortType.IN, typeof(RUN), AcceptsLinks.MULTIPLE, "Go");
    public MyNode()
    {
        NodeType = NodeType.Method;
        Name = "Go Home!";
        AddPort(p1);
        Information = "This is a sample node, which basically takes you to korduene.com when it's called.";
    }
    public override string Code()
    {
        return "System.Diagnostics.Process.Start(" + q + "www.korduene.com" + q + ");";
    }
}
Variable (Example)
[IsNode("Bool")]
public class VarBool : Node
{
    Port val = new Port(PortType.OUT, typeof(bool), AcceptsLinks.MULTIPLE, "Value");
    
    public VarBool()
    {
        NodeType = NodeType.Variable;
        ReturnType = typeof(bool);
        Name = "Boolean";
        val.Value = "true";
        AddPort(val);
        Information = "Boolean, true or false.";
    }
    public override string Code()
    {
        return val.Value.ToLower();
    }
}
Using Your Extension
• Build your extension.
• Copy your extension file to Extensions folder in Korduene's installation directory and restart Korduene.
• That's it you can now use your extension.