alelievr / NodeGraphProcessor

Node graph editor framework focused on data processing using Unity UIElements and C# 4.6
https://github.com/alelievr/NodeGraphProcessor/projects/2
MIT License
2.21k stars 369 forks source link
graph node-based unity unity-editor

NodeGraphProcessor

Node graph editor framework focused on data processing using Unity UIElements, GraphView and C# 4.7

Discord Codacy Badge openupm

This node based solution provides a great C# API allowing you to implement conditional graphs, dependencies graphs, processing graphs and more.
image

Based on Unity's GraphView technology, NodeGraphProcessor is also very fast and works well with large graphs.
Performance

Simple and powerful C# node API to create new nodes and custom views.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GraphProcessor;
using System.Linq;

[System.Serializable, NodeMenuItem("Operations/Sub")] // Add the node in the node creation context menu
public class SubNode : BaseNode
{
    [Input(name = "A")]
    public float                inputA;
    [Input(name = "B")]
    public float                inputB;

    [Output(name = "Out")]
    public float                output;

    public override string      name => "Sub";

    // Called when the graph is process, process inputs and assign the result in output.
    protected override void Process()
    {
        output = inputA - inputB;
    }
}

Unity Compatible versions

This project requires at least Unity 2020.2 with a scripting runtime version of 4.x in player settings.
The current Unity version used for the project is 2020.2.0f1, if you want to install NodeGraphProcessor in an older unity project, you can install it via Open UPM (minimum version: Unity 2019.3).

Installation

Instructions ### Install Manually There are two ways to install this asset: you can use the Unity package manager or move the entire repo inside your Assets folder. To install using the package manager: - download this repo - inside the package manager click the '+' button at the bottom to add a package from disk - then select the package.json file located in `Assets/NodeGraphProcessor` - package is installed :) ### Install via OpenUPM The package is available on the [openupm registry](https://openupm.com). It's recommended to install it via [openupm-cli](https://github.com/openupm/openupm-cli). ``` openupm add com.alelievr.node-graph-processor ``` ### Install via Git Alternatively, you can use the [git address feature in the package manager](https://forum.unity.com/threads/git-support-on-package-manager.573673/) on the branch [#upm](https://github.com/alelievr/NodeGraphProcessor/tree/upm), it only contains the package but it may be out of sync compared to master. Note that you'll not have access to the examples provided in this repo because the package only include the core of NodeGraphProcessor.

Community

Join the NodeGraphProcessor Discord server!

Features

More details are available in the Changelog

Documentation

API doc is available here: alelievr.github.io/NodeGraphProcessor

The user manual is hosted using Github Wiki.

Remaining to do

For more details consult our Github Project page.

Projects made with NodeGraphProcessor

Mixture

image

Want to be in the made with list? Send a message to the issue #14

Gallery

Minimap

Relay nodes

Node connection menu

Node creation menu

Graph Parameters

Groups

Node Settings

Node Messages

Conditional Processing (in Example)

Stacks

Relay Node Packing

Node Inspector

Improved Edge Connection

Multi-Window support

Field Drawers (Thanks @TeorikDeli!)

Sticky Notes (2020.1 or more required)

image

Vertical Ports

image

Drag And Drop Objects

CreateNodeFromObject

Renamable nodes

Just add this bit of code in your Node script to make it renamable in the UI.

        public override bool    isRenamable => true;

RenamableNode