Docs

Nodes and Wires

The node card and its message strip, the rule that keeps an out-of-date result, and every reason a connection is refused.

The node card

The title bar is coloured by the node's category, may carry a small class icon, and shows the node's title - ellipsised if it is too long to fit, with the full title in its tooltip.

A small round ? button sits in the top-right corner of the title bar. Its tooltip: "View node documentation". Clicking it opens the Node Documentation window (see The Window) on that specific node's page.

The message strip is a coloured footer across the bottom of the card, visible only when the node has a message or a stale output to report. It has four severities: None, Info, Warning and Error, each with its own strip colour from the app's theme. The strip text always ellipsises to one line; the strip itself is the hover target, and its tooltip carries the full message.

The out-of-date rule, in full

When an input to a node changes after that node has already produced a result, Mesh Morpher does not throw the old result away. The message strip shows:

Inputs changed - re-run to update

in the warning colour, even though nothing has actually gone wrong. Hovering it shows the full tooltip:

This node's '{0}' output was computed from earlier input and is now out of date. It has been kept rather than overwritten - re-run the node to update it.

where {0} is the name of the affected output pin, or a comma-joined list if more than one pin is affected.

What this means in practice: the node's previous output is kept exactly as it was computed, not silently replaced by the new, unprocessed input. Press the node's own button under Details > Actions to recompute it and clear the flag.

The out-of-date flag is transient - it is never written into the .mmgraph file. See Files, Autosave and Recovery for what the file does and does not store.

Wiring rules

Connections are always stored output to input - see Pins and Data Types.

Rule What happens
A node cannot be wired to itself Rejected. Logged: "Cannot wire a node to itself."
The dragged-from pin must be an output Rejected. Logged: "Source pin must be an output."
The dropped-on pin must be an input Rejected. Logged: "Target pin must be an input."
The two pins' categories must be compatible (or the target must allow scalar-override coercion) Rejected. Logged: "Pin types {0} and {1} are incompatible."
Two struct pins must carry the same struct type Rejected. Logged: "Struct pins carry different types ({0} vs {1})."
The new wire must not create a cycle Rejected. Logged: "Connection would introduce a cycle."
A connection is rejected Silent in the UI - the reason is written to the log only, and nothing is added to the undo history.
A second wire is dropped on an input pin that only accepts one connection The previous wire is disconnected automatically and the new one takes its place, in the same undo step.
You Ctrl+drag from a connector that already has a wire This moves the wire instead of making a new one (see below), rather than starting a fresh connection.

Ctrl+drag to move a wire: holding Ctrl and dragging from a wired connector picks up the far end of that wire instead of starting a new one. Nothing is broken until you release: the new connection is made first and the old one removed second, so dropping somewhere the connection is rejected leaves the original wire intact. Dropping back onto the pin you grabbed is a no-op. Dropping on empty canvas cancels the move without opening the Add Node menu, so the move can never accidentally duplicate the link. Because the gesture is decided the moment you press the mouse button, releasing Ctrl partway through cannot turn it into something destructive. The undo entry is labelled Move Link.

Dropping a wire on empty canvas instead opens the Add Node menu filtered to compatible nodes and auto-wires whatever you pick - see Working in the Graph.

Right-click a pin

Section Entry Tooltip
Subgraph Interface (only while editing inside a subgraph card) Promote to Subgraph Pin Put this pin on the subgraph card as a connector, with or without a wire. No wire is changed.
Keep as Subgraph Pin (shown instead once a boundary wire already created the connector) Keep this connector on the subgraph card even after the wire is broken.
Remove from Subgraph Pins Take this connector off the subgraph card. No wire is touched. Greyed out while a wire still crosses the boundary, with the tooltip "Cannot remove: a wire still crosses the subgraph boundary here, and the card's connector is the only place it can be drawn. Break the wire first."
Break Connection (only when the pin has wires) Break link to {NodeTitle . PinName} - one entry per wire Break this single connection
Break All Pin Links (only when the pin has more than one wire) Break every connection on this pin

If a pin has no wires and cannot be promoted to a subgraph pin, right-clicking it falls through to the canvas menu instead of showing an empty one.

Right-click a node

Right-clicking a node that is not already selected selects it first. The menu's title is the node's own title, or {N} Nodes when several are selected.

Section Entry Tooltip Notes
(title) Copy Copy the selected node(s) to the clipboard. Hidden on an unavailable-class placeholder
Cut Copy the selected node(s) and remove them. Hidden on a placeholder
Duplicate Create a copy of the selected node(s). Hidden on a placeholder
Delete Remove the selected node(s) from the graph. Always available
Connections Break All Links Disconnect every wire into and out of the selected node(s). Disabled when the selection has no connections; whole section hidden on a placeholder
Wrangle Add Classic Mesh Setup Declares the classic Mesh/Mask/Reference/Weights layout in one click - the same action as the pin editor's own button. Only offered while this node has declared nothing yet. Only on a Wrangle node that has declared no parameters and no outputs yet
Subgraph Collapse to Subgraph / Collapse {N} Nodes to Subgraph Group the selected node(s) into one named card. Wires that cross the boundary become pins on the card; nothing is rewired, and Expand puts everything back exactly as it was. Offered even for a placeholder
Edit Subgraph Contents Show only this card's contents. Use the breadcrumb at the top left to come back. Only on a subgraph card
Expand Subgraph Put this card's nodes back into the graph and remove the card. Only on a subgraph card
Share Copy as Shareable Text Copy the selected node(s) to the clipboard as text anyone can paste into their own graph - a forum post, a chat message, an email. Minimal metadata; use "Export Node Preset..." for a file with a title and description. Hidden on a placeholder
Export Node Preset... Save the selected node(s) to a .mmnode file, with a title, author and description you fill in. Hidden on a placeholder
Save to My Presets... Install the selected node(s) into your local preset library, so they show up in the "Installed Nodes" section of the Add Node menu on this machine. Hidden on a placeholder
Organise Add Comment Around Selection Wrap the selected node(s) in a comment box.
Frame Selection Pan and zoom to fit the selected node(s).
Help View Documentation Open this node's reference page. Same target as the ? button on the card

A node whose class this build cannot resolve is locked to select, inspect and delete only - Copy, Cut, Duplicate, Connections and Share are all left off its menu (this is the first of the two placeholder states below).

Two placeholder states

A node whose type this build does not have

When a saved graph references a node class this build cannot resolve, it loads as a placeholder instead of being dropped. Its title reads {LeafClassName} (unavailable), or plainly Unavailable Node if even the class name is missing, coloured a desaturated grey rather than error red. Its tooltip:

This node's type is not available in this build: {ClassPath}

Its settings, pin layout and connections have been preserved exactly and will be written back unchanged when you save, so nothing is lost. The node cannot run, and its properties cannot be edited, until a build that provides the type opens the file.

This usually means the graph was made with a newer version, or with a feature that is not present here.

A node whose settings could not be restored

If a node's saved settings cannot be read back, it is badged red instead, with the tooltip: "This node's settings could not be restored from the saved file. Re-pick the source file or re-apply the node's settings."