Skip to content

Basic editor extension functionality to get a node editor up and running.

License

Notifications You must be signed in to change notification settings

luis-l/UnityNodeEditorBase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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...!

Editor Preview

Custom Node Rendering. This is a LibNoise port (WIP). Click on image to see a video preview. Libnoise Port Sample

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.

About

Basic editor extension functionality to get a node editor up and running.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages