Closes #1172, closes #1765, and closes #1764. Discussion in this Discord thread.
Double-clicking nodes (except those based on proto nodes) enters their subgraph, replacing what's currently viewed in the node graph.
Todo
[x] A breadcrumb trail shows which node you're in relative to the document's root network
[x] Determine input/output type from compiled node network in order to display nodes without document definition.
[x] Remove "Imports" field for node network, and instead store import index in each NodeInput::Network. This allows multiple nodes to use the same import field, and enables creation of the "Imports" node
[x] Create a UI only "Imports" node, used for customizing the network import index for any node
[x] Create a UI only "Exports" node, used for customizing the exports of a node
[x] Save root node for each network, which is an Option<NodeId> default node that DocumentMetadata will use to display/update/add layers
[x] Seperate NodeGraphMessages and GraphOperationMessages to ensure that tool and panel operations only affect document network, while graph UI operations only affect the selected network.
[x] Add restrictions for selecting across different levels of nested networks
Issues:
[x] Previews disappear when entering a nested network
[x] Properties panel doesn't show information for selected layers in the document network when entering a nested network.
[x] Ensure selected nodes are always in the same network
[x] Auto node connection when dragging it onto a link creates an infinite loop that freezes the program
[x] Auto node connection does not work between import and some node
[x] Can't select import/export nodes
[x] Root to export connection is doubled
[x] Hide "Preview" for node not in current network, but show "Make Hidden"
[x] Properties panel does not work when not in the document network
[x] Fix deleting node outside of nested network
[x] Remove placeholder and replace with type name from definition if it exists (Boolean operation), if not then use name of data type.
[x] Set root node to None if the primary export should be used as root
[x] Can't move artboard in layer panel
[x] Drawing artboard when there is a layer adds the layer to primary input, not secondary
[x] New artboards are not added in layer stack, they are offset to left
[x] Deleting layer does not delete children
[x] Export input type not correct when previewing ToArtboard protonode
[x] Swapping inputs for isolated nodes breaks them
[x] Copy/cut and paste is broken in document network
[x] Fix "Preview"/"Stop Preview" buttons
[x] Errors don't display on node graph
[x] Auto reconnect does not work when when deleted node is between import node and network node
[x] Deleting node between import and export causes crash since it tries to reconnect, which is currently not supported.
[x] Deleting layer inside of nested network randomly deletes children
[x] Copy pasting node exposes all inputs
[x] Add colors for internal types such as "GraphicElement"
[x] Swap node inputs for ConstructLayer and AddArtboardNode
[x] Fix thumbnails not generating when entering and exiting a network
[x] Copy and pasting nodes with network input retains their input.
[x] Disconnecting between combine and split channels node doesn't work #1765
[x] Copy and pasting protonodes does not resolve default tagged value from compiled network. They are instead set to None. Will require a rework for copying nodes (map_ids)
[x] Inserting a non manual composition node, such as the "Multiply" node between the imports and some node crashes (can't reproduce)
[x] Deleting split channels that is connected to combine channels crashes
[x] Fix demo artwork
Deferred:
[ ] Add positions for all DocumentNodeDefinition internal networks
[ ] Reset transform in Graph.svelte when entering nested network - will fix in next PR when moving node graph state to Rust
[ ] Resolved types for the Import node (which is derived from the parent node) is not saved for hidden node inputs. Nodes with manual composition also may have strange behavior #1767
Change to consider:
If network cannot be rendered, remove all types from node graph, since they are from the last render and do not represent the current state
Closes #1172, closes #1765, and closes #1764. Discussion in this Discord thread.
Double-clicking nodes (except those based on proto nodes) enters their subgraph, replacing what's currently viewed in the node graph.
Todo
NodeInput::Network
. This allows multiple nodes to use the same import field, and enables creation of the "Imports" nodeOption<NodeId>
default node thatDocumentMetadata
will use to display/update/add layersIssues:
map_ids
)Deferred:
DocumentNodeDefinition
internal networksChange to consider: