Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

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

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

113 Commits
113 Commits
 
 
 
 
 
 
 
 
 
 
 
 

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

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.