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.