Home
  • Manual
  • Node Index
  • API
  • Changelog
Show / Hide Table of Contents
  • Tutorials
    • Creating your first map generator
      • 1. Creating your first map graph
      • 2. Running a graph at runtime
      • 3. Adding more nodes
      • 4. Object placement
    • Basic map types
      • • Cave-like maps
      • • Room-based maps
      • • Sample-based maps
      • • Combining map types
    • More Tutorials
      • • Using prefabs instead of tilemaps
      • • Changing tile/prefab/tilemap set probabilities (weighted random)
      • • Linking a named color set to tilesets/prefab sets
      • • Organizing nodes into groups
      • • Adding notes & comments
      • • Running a graph within a graph (Sub graphs)
      • • Tilemap Sets
      • • Optimization tips
      • • Static seed (daily challenges)
      • • Running a graph asynchronously/multi-threaded
      • • Object pooling
      • • Tips for rule tiles
      • • Saving and loading maps
    • Tutorials for coders
      • • Running graphs from scripts
      • • Output parameters
      • • Creating your own nodes
      • • Creating your own node views
      • • Adding a constant node type
  • Sample Project
  • Troubleshooting
  • Support

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);    
    }
}
In This Article
Back to top Generated by DocFX