# ContextNode

> A specialized node that serves as a dynamic container for compatible BlockNode instances.

## Definition

* **Type:** Class
* **Namespace:** [Unity.GraphToolkit.Editor](/engine/6000.7/script-reference/unity/graphtoolkit/editor.md)
* **Assembly:** UnityEditor
* **Inherits from:** [Node](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node.md)
* **Implements:** [INode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/inode.md)

```csharp
public abstract class ContextNode : Node, INode
```

## Remarks

Context nodes are node structures that group and control a sequence of [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md) instances. A [ContextNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode.md) owns a list of [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md)s. These blocks cannot exist independently in the graph and must always be children of a context node.

To control which block node types are valid for a specific context node type, use the [UseWithContextAttribute](/engine/6000.7/script-reference/unity/graphtoolkit/editor/usewithcontextattribute.md) on the corresponding [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md) class.

## Properties

| Property                                                                                          | Description                                                                                                                                             |
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [BlockCount](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/blockcount.md) | The number of [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md)s contained in this context node.                      |
| [BlockNodes](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/blocknodes.md) | An `IEnumerable` collection of the [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md)s contained in this context node. |

## Methods

| Method                                                                                                      | Description                                                                                                                                                |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AddBlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/addblocknode.md)       | Adds an existing [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md) to this context node.                                 |
| [ClearBlockNodes](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/clearblocknodes.md) | Removes all [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md)s from this context node.                                   |
| [CreateBlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/createblocknode.md) | Creates and inserts a new [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md) into this context node.                      |
| [GetBlock](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/getblock.md)               | Retrieves the [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md) at the specified index in the context node's block list. |
| [InsertBlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/insertblocknode.md) | Inserts an existing [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md) at the specified index in this context node.       |
| [RemoveBlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/contextnode/removeblocknode.md) | Removes the specified [BlockNode](/engine/6000.7/script-reference/unity/graphtoolkit/editor/blocknode.md) from this context node.                          |

## Inheritance

**Inherited Members:**

* [Node.OnEnable()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/onenable.md)
* [Node.OnDisable()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/ondisable.md)
* [Node.OnPortDataTypeChanged(IPort, Type, Type)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/onportdatatypechanged.md)
* [Node.DefineNode()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/definenode.md)
* [Node.OnDefineOptions(IOptionDefinitionContext)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/ondefineoptions.md)
* [Node.OnDefinePorts(IPortDefinitionContext)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/ondefineports.md)
* [Node.GetNodeOption(int)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getnodeoption.md)
* [Node.GetNodeOptionByName(string)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getnodeoptionbyname.md)
* [Node.GetInputPort(int)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getinputport.md)
* [Node.GetInputPorts()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getinputports.md)
* [Node.GetInputPortByName(string)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getinputportbyname.md)
* [Node.GetOutputPort(int)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getoutputport.md)
* [Node.GetOutputPorts()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getoutputports.md)
* [Node.GetOutputPortByName(string)](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/getoutputportbyname.md)
* [Node.RemoveFromGraph()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/removefromgraph.md)
* [Node.Graph()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/graph.md)
* [Node.ID()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/id.md)
* [Node.Tooltip()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/tooltip.md)
* [Node.Title()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/title.md)
* [Node.Subtitle()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/subtitle.md)
* [Node.DefaultColor()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/defaultcolor.md)
* [Node.FillAmount()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/fillamount.md)
* [Node.NodeOptionCount()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/nodeoptioncount.md)
* [Node.NodeOptions()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/nodeoptions.md)
* [Node.InputPortCount()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/inputportcount.md)
* [Node.OutputPortCount()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/outputportcount.md)
* [Node.Position()](/engine/6000.7/script-reference/unity/graphtoolkit/editor/node/position.md)
