Skip to content

Latest commit

 

History

History
77 lines (50 loc) · 4.3 KB

README.md

File metadata and controls

77 lines (50 loc) · 4.3 KB

Visual Node System

Build Status Continuous Integration

This library provides a powerful framework for creating and managing visual node systems. These are typically used in graphical programming environments, game logic builders, and AI behavior tree editors.

Master branch is free of tests to maintain its lightweightness. All test-related stuff (except GitHub Actions) is located in the Tests Branch

Key Features

  • Unchanged Dear Imgui: This project does not depend on modifications to Dear Imgui.

  • Zoom: Zoom functionality enables detailed viewing and efficient navigation. The font system ensures precise text rendering at various zoom levels.

  • Reroute Nodes: Reroute nodes offer enhanced organization for clearer, more readable visual graphs, enabling flexible customization of connection paths. Also they simplify debugging by making connections traceable. To add reroute node just double click on connection.
  • Group Comments: Improve clarity and organization within the visual node-based interface by allowing users to encircle and highlight node collections, signifying their combined functionality.
  • Flexible Socket Management: The library offers functionalities for managing node sockets (input/output). These sockets serve as points of data connection between different nodes.

  • JSON Serialization: The library provides functionalities to serialize/deserialize the node data to/from JSON format.

  • Integrated Copy/Paste: With the help of JSON serialization/deserialization, elements can be copied from one node area to the same or another node area.

  • Node Factory For Child Node Creation: The library includes a system for creating child nodes using node factory, which enables JSON serialization of custom nodes.

  • Custom Context Menus: The library supports the integration of custom context menus.

  • File System Integration: The system allows you to save/load node data to/from files.

  • Node Event Callbacks: The library provides functionalities to set callbacks for node events.

I have personally used it in two of my projects:

Focal Engine Editor Focal Engine editor material window

Focal Engine Test Platform Focal Engine test platform

Usage

When using this project as a Git submodule, ensure you provide the path to Dear ImGui in your project. For a simple example of how to use library, see the Visual Node System Example.

To add this module to your project, use the following command:

git submodule add https://github.com/Azzinoth/VisualNodeSystem

If you want to move the submodule to a folder named "SubSystems", for example, use the following command:

git mv VisualNodeSystem SubSystems/

Third Party Licenses

This project uses the following third-party libraries:

  1. GLM: This library is licensed under a permissive open-source license, similar to the MIT license. The full license text can be found at GLM's GitHub repository.

  2. jsoncpp: This library is licensed under the MIT License. The full license text can be found at jsoncpp's GitHub repository.