Vixen
dd8b0a81
csharp
public readonly record struct SubGraphExpansion

One sub-graph node, as it was expanded: the graph it stood for and what it was set to.

Read the guide page for this →

Remarks

⚠ The flattener throws the sub-graph node away, and this is what survives it. Inlining replaces the node with the graph's contents, so the numbers an author typed on it reached nothing at all — a knob that accepted a value, saved it, and changed no picture (#742). What is recorded is the table rather than an interpretation of it: which keys are parameters is a question only the graph's own compiler can answer.

⚠ Path is the middle of the walk, and only its two ends used to be recorded — #925. Source is the outermost node and Inner is an identity in the innermost file, so two sibling instances of one compound nested inside another share both, share Type, and are indistinguishable to anything downstream — two noise generators drawing one picture. Expansion does distinguish them and cannot be used for it: it is a walk-ordered counter, so an insertion moves it, which is #875 one level in.

Every element is stable within its own file, which is the property that makes this usable where the counter is not: each is a NodeId read out of the containing graph's document, and a document never renumbers or reuses one. So the chain moves only when an author moves the compound node it names.

Fields and properties (4)

  • public string Type

    The node-type path of the sub-graph that was expanded.

  • public NodeId Source

    The node in the author's own graph to blame for it — the outermost one, exactly as Source is, because that is the only node a canvas has.

  • public IReadOnlyDictionary<string, string> Settings

    What the sub-graph node carried, by key: Texts, copied. A published graph's knobs are stored there under their own names, so this is the author's overrides — and it holds whatever else that table held, because the flattener does not know which keys a given kind of graph calls parameters.

  • public ImmutableArray<NodeId> Path

    Every sub-graph node walked through to reach this expansion, outermost first and this expansion's own node last. One element for a sub-graph node in the author's graph, two for one nested inside it, and so on.

Methods (1)

  • public SubGraphExpansion(string Type, NodeId Source, IReadOnlyDictionary<string, string> Settings, ImmutableArray<NodeId> Path)

    One sub-graph node, as it was expanded: the graph it stood for and what it was set to.

Used by (4)

  • FlattenerVixen.Editor.NodeGraph
  • NodeGraphInliningVixen.Editor.NodeGraph
  • SubGraphTestsVixen.Editor.NodeGraph.Tests
  • TextureGraphCompilerVixen.Editor.TextureGraph