A behavior that has a Start and an End node can now be dropped into any other graph as a node of its own. What is declared on the start node becomes the inputs of that node, what hangs on the end node its outputs; the port list is derived from the sub graph, not copied, so declaring a port in one graph grows the node in the other without touching it. The node carries the behavior's name and the palette lists behaviors by name, so a call is one grab instead of a node plus a dropdown. An embedded behavior has no object and therefore no place for variables: every call starts on the asset defaults and communicates only through its ports. That is the conservative direction - state can still be added later, and shared state already has a home in a behavior object in the scene. Node ids are unique per graph only, so each call gets its own pulse cache; without that, two graphs would collide. Renaming a port used to silently drop the value typed on the calling node. It is carried along now, project wide, like the edges.
11 lines
345 B
TypeScript
11 lines
345 B
TypeScript
// Importing the graph package registers the built-in node set as a side effect.
|
|
import './nodes';
|
|
|
|
export * from './dropTarget';
|
|
export * from './Graph';
|
|
export * from './nested';
|
|
export * from './NodeContext';
|
|
export * from './NodeRegistry';
|
|
export * from './values';
|
|
export { GraphInterpreter, type TraceListener } from './GraphInterpreter';
|