> For the complete documentation index, see [llms.txt](https://giantgrey.gitbook.io/databrain/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://giantgrey.gitbook.io/databrain/add-ons/logic/custom-nodes.md).

# Custom Nodes

Creating a custom node for Logic is as easy as creating a new C# file.

1. Simply right click in the project view and select: Create / Databrain / Logic / New Node
2. Name the node
3. Done

You can of course also just create a new class file and derive from **NodeData**

```cpp
using Databrain.Logic.Attributes;

namespace Databrain.Logic
{
    [NodeTitle("My Node")]
    [NodeCategory("Custom")]
    [NodeOutputs(new string[] {"Out"})]
    [NodeDescription("This is a node description")]
    public class MyNode : NodeData
    {
        public override void ExecuteNode()
        {
            // Execute code there
        
            // Execute next node connected to output index 0
            ExecuteNextNode(0);
        }
    }
}
```

### Overridable methods

#### ExecuteNode

Gets called upon node execution. Usually this is where you want to add your code.

#### InitNode

Gets called upon graph initialization at runtime

#### CustomGUI

Override this method to return a custom UI for your node.

#### EditorInitialize

Gets called on node editor start-up.

#### SelectNode

Gets called when node gets selected.

#### DeselectNode

Gets called when node gets deselected.

## Node Attributes

All node properties such as **title**, **color**, **icon** or **outputs** are defined with class attributes. Please read following documentation for a list of all available node attributes.

{% content-ref url="/pages/telZIKC4hx0nv1p6ATOq" %}
[Node Attributes](/databrain/add-ons/logic/custom-nodes/node-attributes.md)
{% endcontent-ref %}
