Adding a constant node type
In order to create a constant node of a certain type, a node view for that particular type needs to be defined.
Here's an example of a constant node view for an enum:
using System;
using InsaneScatterbrain.ScriptGraph;
using InsaneScatterbrain.ScriptGraph.Editor;
using UnityEditor.UIElements;
// Adding this attribute adds the node view to the graph's context menu under "Constant"
[ConstantNodeView(typeof(MyEnum))]
public class MyEnumConstantNodeView : ConstantNodeView
{
public MyEnumConstantNodeView(ConstantNode node, ScriptGraphView graphView) : base(node, graphView)
{
var myEnumValue = (MyEnum) node.Value;
// AddDefaultField creates the EnumField and makes sure that value changes are persisted.
var field = AddDefaultField<Enum, EnumField>(myEnumValue);
// Init needs to be called to make the field aware of the enum's specific type.
// The field will be empty otherwise.
field.Init(myEnumValue);
}
}