UnityNodeEditorBase
                                
                                 UnityNodeEditorBase copied to clipboard
                                
                                    UnityNodeEditorBase copied to clipboard
                            
                            
                            
                        Basic editor extension functionality to get a node editor up and running.
Unity Node Editor Base
Basic editor extension functionality to get a node editor up and running. (Click on image to see video preview)
Main Features
- Editor view with panning, zooming, and grid background
- Save System using Scriptable Objects
- Customizable GUI
- Create, delete, drag nodes
- Create, change, delete connections between nodes
- Undo/Redo system
- Action binding system (bind an action to a key input, context menu, etc..)
- Reactive nodes. Output nodes are updated automatically if a change occurs.
- More to come...!
Custom Node Rendering. This is a LibNoise port (WIP). Click on image to see a video preview.

Custom node class example
public class PerlinNode : EditorNode
{
    private Perlin _noise = new Perlin();
    public PerlinNode()
    {
        name = "Perlin";
        var noiseIn = AddInput();
        noiseIn.name = "Input";
        var mask = AddInput();
        mask.name = "Mask";
        var noiseOut = AddOutput();
        noiseOut.name = "Output";
        noiseOut.getValue = () => { return _noise; };
        FitKnobs();
        bodyRect.height += 95f;
        bodyRect.width = 150f;
    }
    public override void OnBodyGUI()
    {
        EditorGUI.BeginChangeCheck();
        _noise.Seed = EditorGUILayout.IntField("Seed", _noise.Seed);
        _noise.OctaveCount = EditorGUILayout.IntField("Octaves", _noise.OctaveCount);
        _noise.Persistence = EditorGUILayout.DoubleField("Persistence", _noise.Persistence);
        _noise.Frequency = EditorGUILayout.DoubleField("Frequency", _noise.Frequency);
        _noise.Lacunarity = EditorGUILayout.DoubleField("Lacunarity", _noise.Lacunarity);
        if (EditorGUI.EndChangeCheck()) {
            // ... do stuff...
        }
    }
    
The Discord is just an archive now. Please visit https://github.com/Siccity/xNode as a more complete Node plugin solution.
