All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fixed fields with [Settings] attribute not showing up with inheritance.
- Fixed selection still active when selecting nodes without inspector fields.
- Fixed multi-selection drag and drop of edges.
- Fixed errors when a parameter is destroyed and it's reference is still used in the graph.
- Fields with both attributes [SerializeField] and [ShowInInspector] are now visible in both the node and inspector.
- Added a callback on the BaseGraph class to know when the asset is deleted on the disk.
- Added the support of [InspectorName] to change the display name of fields in the node.
- Fixed relay node not applying custom conversions when needed
- Fixed the node create menu not listing all nodes when created from edge drag.
- Fixed Int vector drawer display in nodes.
- Fixed parameter not editable in Unity 2021.2.
- Deprecated the FieldFactory and [FieldDrawer] system. You can use Unity's CustomPropertyDrawer instead.
- SerializedProperties are now used to display the properties in the node, so they support Unity's default UI and attributes for all properties.
- Renamable nodes
- Added an API in the toolbar view to add separators and custom UI fields.
- Added API to check if node was created from a duplication operation (see BaseNode.createdFromDuplication and BaseNode.createdWithinGroup).
- Node inspector settings are now serialized for the lifetime of an editor session (not between sessions).
- Fixed GetNodeViewTypeFromType not supporting inheritance.
- Fixed nodes loosing the graph reference after the asset was changed in by an external process.
- Fixed a nullref that happened after closing the graph and undoing a change on a parameter
- Fixed an issue where an undo broke the parameter values
- Fixed edges disappearing after an undo made in the scene and a graph was opened.
- Fixed issues with relay node
- Added vertical ports
- Added an example with Waitable and async nodes
- Added drag and drop support for assets and scene objects directly into a graph
- Fixed ports duplicated after undo
- You can now re-order elements inside the blackboard.
- Added support of custom property drawers for exposed parameters in the graph inspector (the one that shows in the inspector when the graph is selected).
- Serialization backend (use [SerializeReference] instead of JSON)
- Added deletable bool API on the BaseNode
- Fix missing and inconsistent field drawers on inherited node fields
- Fix inconsistent field drawer positions after unsupported fields
- Fixed port sync code
- Fixed exception to log not handling correctly the stacktraces
- Node creation menu wasn't showing all graph specific nodes
- Added an API to exclude nodes from the creation menu either based on graph type or graph settings. See IsCompatibleWithGraph and NodeMenuItemAttribute attributes.
- Fixed locale serialization issue with float and vectors
- Fixed port order not correct.
- Fix selection lost after undo / redo
- Fix node not removed from the inspector when the node is deleted in the graph
- Fix performance issue with port sync
- Fix nodes not disabled when deleted due to undo/redo
- Added sticky notes (only for 2020.1+)
- Added the [ShowAsDrawer] Attribute to display a drawer beside an input port
- Fixed relay node packing workflow and some deletion issues
- Fixed ArgumentOutOfRange in relay node
- Fixed relay node creation from input port
- Depth first compute order (enabled by default) instead of breadth first
- Cycle detection in the graph, cyclic nodes are now marked with a compute order of -2
- Added a node create menu when dropping an edge in the graph that also connects the edge to the new node (like in ShaderGraph or VFX Graph)
- Added ITypeAdapter.GetIncompatibleTypes to list all the incompatible types (prevent automatic casting / unwanted connectable ports, can be used to exclude a conversion to System.Object for example)
- Added a node inspector to show advanced settings in the inspector, see
ShowInInspector.cs
andDrawDefaultInspector(bool fromInspector)
for more details.
- Improved a lot the edge connection behavior for both input and output ports
- Improved domain reload performances by using
TypeCache
when possible - Node copy/pasting now keeps the connected edges
- Copy/paste now works between multiple graph windows
- Copy/paste now supports node groups
- Fixed delete of multiple relay node at the same time breaking the graph
- Fixed undo event not being unregistered when closing the graph
- Fixed undo on parameter creation / deletion
- Fixed toolbar AddButtons deleting existing buttons
- VisibleIf attribute in nodes, allow you to show fields only when another field have a specific value.
- Added the possibility to hide controls when the mouse is not over the node
- Added a method to call the onProcess callback in the graph
- Support of multiple [NodeMenuItemAttribute] on the same class
- Fixed execution error in player when using IL2CPP
- Fixed ObjectField creation with FieldFactory
- Added Relay nodes
- Added API to have a custom Edge Listener
- When a port is disconnected, it's value is set to null or default.
- Window menu graph example
- Added StackNode with custom view
- Added an API to notify the graph that a node have changed (BaseGraph.NotifyNodeChanged)
- Renamed Comment Block by Group
- Fixed Enums fields created via FieldFactory (inspector graph UI for properties should now work with enums)
- User defined type conversions inside the graph (ex: float to vector). See TypeAdapter.cs
- Fixed build errors
- Fixed badge distance when node used a custom size
- API to create C# template menu items (and moved the default Node and NodeView templates to Examples)
- Added an event that is fired when something is changed inside the graph (BaseGraph.onGraphChanges)
- Added support of node messages (you can attach one message with an icon to a node, either from the process function or from the view. See
AddMessage
andAddMessageView
functions)
- When switching a port type, the connected edges are now removed if the new port type is incompatible.
- Node and Graph property serialization (as json) Scriptable Object to store graph as a Unity asset.
- Highly customizable and simple node and links API
- Support multi-input into a container (multiple float into a list of float for example)
- Graph processor which execute node's logic with a - dependency order
- Powerful C# API to add new nodes / graphs
- Exposed parameters that can be set per-asset to customize the graph processing from scripts or the inspector
- Search window to create new nodes
- Colored comment blocks (node groups)