> 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/node-attributes.md).

# Node Attributes

You can add mutliple attributes to your node class to define the node properties

```csharp
[NodeTitle("My Node")]
[NodeCategory("Custom")]
[NodeOutputs(new string[] {"Out"})]
[NodeDescription("This is a node description")]
public class MyNode : NodeData
```

### NodeTitle

```csharp
[NodeTitle("My Node")]
```

Define the title of your node

### NodeCategory

```csharp
[NodeCategory("Category A/Sub-Category")]
```

Set the category of your node

{% hint style="info" %}
You can also define sub-categories with a backslash. (example: Unity/Physics)
{% endhint %}

### NodeIcon

Set an icon for your node, either by assigning the name of an icon from the icons folder located at <mark style="background-color:orange;">Databrain / Core / Res / Icons</mark> or by assigning a complete asset path like: <mark style="background-color:orange;">Assets/MyNodes/Icons/nodeIcon.png</mark>\
or by assigning an additional file name which is located in the same folder as the icon.&#x20;

```csharp
[NodeIcon("start")]
```

```csharp
[NodeIcon("myCustomIcon.png", "CustomIcons.cs")]
```

### NodeColor

Define the color of your node. Either by a hex color string or by a DatabrainColor.

```csharp
[NodeColor("#76FFAE")]
```

You can also define custom colors for each border (left, right, top, bottom)

```csharp
[NodeColor("#76FFAE", new string[]{"", "#FFFFFF", "", ""})]
```

### NodeDescription

```
[NodeDescription("This is a description for my node")]
```

Set a description for your node

### NodeOutputs

```csharp
[NodeOutputs(new string[] {"A", "B", "C"})}
```

Define the node outputs.

### NodeSize

```csharp
[NodeSize(200, 100)]
```

Set the node size

### NodeNotConnectable

```csharp
[NodeNotConnectable]
```

This attribute makes the node not connectable like the OnStart node.

### NodeAddOutputsUI

```csharp
[NodeAddOutputsUI]
```

<div align="left"><figure><img src="https://2348672745-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIoqF5QAgQsqxrjmTIKpE%2Fuploads%2FOagu5WtLd9xs0AIuvpVQ%2FallowAddOutputsAttribute.png?alt=media&amp;token=d8ab9229-0ab5-4e27-b571-6df33d6df508" alt=""><figcaption></figcaption></figure></div>

This will add a simple UI to the node inspector which allows you to manually add and remove outputs.

### HideNode

```csharp
[HideNode]
```

Hide the node from the node creation panel

### NodeInputConnectionType

```csharp
[NodeInputConnectionType(new Type[]{typeof(CustomNodeType)}]
```

Define which nodes are allowed to be connected to the input of the node.

### NodeOutputConnectionType

```csharp
[NodeOutputConnectionType(new Type[] {typeof(CustomNodeType)}]
```

Define to which node types the output can be connected to.

### Node3LinesSpline

```csharp
[Node3LinesSpline]
```

Creates a three lines connection spline type instead of just one single spline.
