Skip to content
Bit Quirky Behavior Trees and
State Machines

Search documentation

All topics and APIs

Close returns focus to Search.

What are you looking for?

Try a common topic or enter a complete API identifier.

Browse the reference instead

Esc closes · Tab reaches results · Enter opens the focused link

v0.6.0
Menu

Assembly: BitQuirky.Graph.GraphView.Editor

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.CardBodyGradient

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:52-362

Inherits: VisualElement

Smooth Painter2D gradient overlay for one surface of a raised node card. Two instances per card: one inside the icon well painted diagonally so the family color shades top-left to bottom-right, and one inside the label slot painted vertically so the dark body shades top to bottom. Each instance is the first child of its parent so the gradient sits behind the glyph or text content. The painter traces the parent’s resolved corner radii directly, preserving the same silhouette in native panel captures where UI Toolkit’s overflow clip is unavailable.

Responsibilities:

  • Paint one continuous linear gradient across the element’s content rect via Painter2D.fillGradient, with start/end chosen from the configured Direction.
  • Fill the parent’s rounded silhouette without relying on an overflow clip.
  • Read the gradient endpoint colors from the design-system USS custom properties so the tokens in Tokens.uss remain the single source of truth.

Does NOT:

  • Own the parent’s base color (the icon-well paints the family color, the label-slot inherits the card’s dark panel color).
  • Render the glyph, the label text, the drop shadow, or the 1px rim bevels.
  • React to family color changes; the overlay alpha values are uniform across all families by design.

C#
public float BottomRampHeightPx { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:134-144

Height in pixels of the bottom (dark) shading ramp, measured along the gradient axis from the end edge. The ramp fades from alpha 0 up to the configured --bq-node-card-surface-gradient-dark corner alpha over this distance.

C#
public float DiagonalVerticalBias { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:151-161

Vertical weight of the diagonal gradient axis. A value of one uses the element’s bottom-right corner; larger values make vertical movement advance through the gradient faster than horizontal movement.

C#
public BitQuirky.Graph.GraphView.Views.CardBodyGradient.Direction GradientDirection { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:99-108

Direction of the gradient ramp. Setting this triggers a repaint.

C#
public bool PaintBottomShading { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:185-194

When false the bottom-edge dark ramp is suppressed (alpha stays at 0). MirrorsPaintTopShadingfor the dark end of the gradient.

C#
public bool PaintTopShading { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:169-178

When false the top-edge light ramp is suppressed (alpha stays at 0). Used by callers that want a single-sided overlay, such as a card body that should only darken at the bottom without a brightness break at the seam against a band painted by a sibling slot.

C#
public float TopRampHeightPx { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:116-126

Height in pixels of the top (light) shading ramp, measured along the gradient axis from the start edge. The ramp fades from the configured --bq-node-card-surface-gradient-light corner alpha down to alpha 0 over this distance, and anything past it is fully transparent.

C#
public CardBodyGradient()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:201-207

Builds the overlay. It takes no pointer input, so it can sit over the card without intercepting clicks, and repaints itself whenever its geometry or its resolved style tokens change. Both shading ends start enabled.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.CardChevronExtension

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardChevronExtension.cs:72-352

Inherits: VisualElement

Painter2D-rendered hexagonal card silhouette used by Condition and Selector families. The hexagon is INSCRIBED in the same rectangular bounding box as a regular rounded-rect card - the overall card width and height are unchanged - but its four corners are chamfered diagonally so that each side’s midpoint becomes a chevron tip. The result is a 6-sided silhouette: two short horizontal edges (top, bottom), four diagonal chamfered edges, and two chevron tips at the midpoint of the left and right edges of the rectangular bounding box.

When the silhouette is active the card’s normal USS chrome (background fill + 1px border + rounded corners) is turned transparent and this element becomes the sole renderer of the card chrome: family-color fill on the decorator (left) region, --bq-panel fill on the body (right) region, diagonal gradient overlay on the decorator, vertical gradient overlay on the body, and a 1px dark stroke around the full hexagonal perimeter.

The icon-well’s own family-color background, the body’s --bq-panel background, and BOTH the icon-well and body gradient overlays are hidden in this mode via USS - this element draws everything that those layers would normally contribute. The icon-well and label-slot remain as transparent containers for the glyph and text content respectively.

Responsibilities:

  • Trace the hexagonal silhouette inscribed in the card’s rectangular content rect.
  • Fill the decorator region (left of the icon-well’s right edge) with the family color, re-fill with the diagonal alpha-plateau gradient overlay.
  • Fill the body region (right of the icon-well’s right edge) with --bq-panel, re-fill with the vertical alpha-plateau gradient overlay.
  • Stroke the full hexagonal perimeter with the card border color.
  • Read the family color from resolvedStyle.color, set by per-family USS rules in NodeFamilies.uss.

Does NOT:

  • Render the glyph or label text - those remain children of the icon-well and label-slot.
  • Render the drop shadow, active glow, or selected outline.
  • Position itself; the USS inline rule fills the parent.

C#
public CardChevronExtension()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardChevronExtension.cs:120-132

Builds the overlay stretched to fill its parent card, with the silhouette inscribed in that box. It takes no pointer input and repaints on every geometry change, so it tracks a card that resizes.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.CardDropShadow

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardDropShadow.cs:67-268

Inherits: VisualElement

Feathered drop shadow for raised node cards. Renders a stack of concentric rounded-rect fills via Painter2D, each fill one step larger than the next at a constant per-step alpha so the alpha accumulates toward the centre and fades smoothly to zero at the outer edge. UI Toolkit has no native box-shadow with blur, so this stack is how we approximate a soft drop shadow without shipping a 9-slice PNG asset.

Responsibilities:

  • Paint N concentric rounded-rect fills inside the element’s content rect, biased downward by the configured drop-shadow offset so the shadow reads as light coming from above.
  • Derive the per-step alpha from the configured peak shadow strength so the inner-most ring’s accumulated opacity matches the design target, regardless of step count.
  • Self-position via inline negative top/right/bottom/left so the element extends past the parent card by the configured feather extents on each side.
  • Leave the card’s own box untouched: every rounded-rect layer is cut out at the card’s outline, so the card’s 1px ring reads its exact token color instead of that color under the shadow’s peak alpha. The design draws its ring over the shadow for the same reason.

Tuning lives in the const block below rather than in USS tokens because Unity’s UI Toolkit does not reliably resolve custom properties on an element whose USS rule has no other property referencing those variables. Repeated attempts at USS-anchored var forwarding all left customStyle.TryGetValue returning false - the resolver simply doesn’t run for the shadow element. Hardcoding the values keeps the recipe predictable and avoids that pitfall; if a project ever needs to override these, the parent can read its own resolved style and assign a public property here.

Does NOT:

  • Render the card body, gradient overlay, rim bevels, or glow rings - those are separate sibling elements.
  • Animate; the shadow is static and only redraws when the element’s geometry changes.

C#
public CardDropShadow()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardDropShadow.cs:93-105

Builds the shadow with the negative insets that let it spill outside its parent card - wider at the bottom than the top, so the card reads as lit from above. It takes no pointer input and repaints on every geometry change. Add it as an absolutely positioned child of the card, behind the body.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.CardGlowHalo

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardGlowHalo.cs:27-85

Inherits: VisualElement

Feathered glow halo behind a running node card. Paints concentric rounded-rect fills whose alpha accumulates toward the card so the glow fades smoothly to nothing at its outer edge, matching the design’s soft navy falloff (UI Toolkit has no blurred box-shadow).

Responsibilities:

  • Paint a feathered halo inside its content rect. The inner (near the card) and outer (far) colors ride the standard background-color and border-top-colorstyle channels so both stay USS token lookups (custom-property resolution is unreliable on side elements; seeCardDropShadow).
  • Multiply the accumulated alpha by the element’s resolved opacity so the existing --bq-active-glow-opacity contract keeps working.

Does NOT:

  • Render the ring on the card edge (card border) or the dark inner band (face-clip border); those are card-level styles.

C#
public CardGlowHalo()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardGlowHalo.cs:40-46

Builds the halo. It takes no pointer input and repaints on geometry and style changes, so it follows a card that resizes and picks up token changes. The caller positions it to extend past the card on every side; the colors come from the resolved style.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.CompositeLiteralElement

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:32-664

Inherits: VisualElement

A COMPOSITE literal: one value made of several scalar components, drawn as a single horizontal row of bordered boxes, each preceded by its own label (feature round-trip 071, contract C5).

The library holds no C# opinion. It does not know what aVector3is, does not parse or compose a literal, and does not invent a label. It receives labels and values as data, hands typed text back to the host validator per component, and raises ONE Committedcarrying every component’s text. Composition into a single literal is the host’s job, which is what keeps a three-box edit a single value, a single pending edit, and a single undo step.

Every box reuses the scalar literal box’s chrome by carrying the same USS classes (seeLiteralBoxChrome), so a component box and a scalar box are the same control with a different width and a label beside it.

Orientation is the explicit departure from the Unreal reference: the row is HORIZONTAL and sits to the LEFT of the pin, never stacked beneath the pin label.

C#
public System.Func<BitQuirky.Graph.GraphView.LiteralValidationResult> ClearValidator { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:69

Asked whether the row may commit as a CLEAR, which is what every component being blank means.

Separate fromComponentValidatoron purpose, because the two answer different questions and a per-component validator cannot answer this one: a single blank component is perfectly valid (the host reads it as zero), and only the whole row being blank is a request to remove the value. An invalid verdict blocks the commit, keeps the row open, and shows the host’s message, exactly as a rejected component does.

Null means every clear is permitted, which is the library’s standing position: it holds no opinion about whether a slot can legally become empty.

C#
public int ComponentCount { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:138

The number of components in the row.

C#
public System.Func<int, string, BitQuirky.Graph.GraphView.LiteralValidationResult> ComponentValidator { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:53

Validates one component’s text. The index identifies which component, so the host can apply that component’s own declared type. Never invoked by the library for its own purposes: the result only ever drives that one box’s presentation and the row’s commit gate.

C#
public System.Collections.Generic.IReadOnlyList<string> ComponentValues { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:144

The committed text of every component, in render order.

C#
public bool Editable { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:135

True when a click opens an editor on a component box.

C#
public int EditingComponentIndex { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:164

The index of the component whose editor is open, or -1.

C#
public bool IsEditing { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:141

True while any component’s editor is open.

C#
public bool IsValid { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:161

True when no component is currently invalid, so a commit is allowed.

C#
public event System.Action<System.Collections.Generic.IReadOnlyList<string>> Committed

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:75

Raised once when the whole row commits, carrying every component’s trimmed text in render order. Never raised per component: the row is one value.

C#
public event System.Action<bool> ValidityChanged

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:78

Raised when any component’s validity changes, with the row’s overall validity.

C#
public const float ComponentEditorWidth = 120

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:132

Width the FOCUSED component opens to, deliberately the scalar literal box’s own editor floor: a component box is the same control, just narrower at rest, so the two open to the same roomy size and a value is as easy to type into one as into the other.

Applied to the focused box alone, so its siblings hold their resting size and the row stays readable while one component is being typed into. Applied inline rather than in USS for the same reason the scalar box does it inline: an open-versus-resting width is a dynamic per-state choice, not static chrome.

CompositeLiteralElement(IReadOnlyList<string> componentLabels, IReadOnlyList<string> componentValues, string typeName, bool editable)

Section titled “CompositeLiteralElement(IReadOnlyList<string> componentLabels, IReadOnlyList<string> componentValues, string typeName, bool editable)”
C#
public CompositeLiteralElement(System.Collections.Generic.IReadOnlyList<string> componentLabels, System.Collections.Generic.IReadOnlyList<string> componentValues, string typeName, bool editable = false)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:92-119

Parameters

  • componentLabels: One label per component, in render order. Must be non-empty: a row with no components is a value with nothing to edit, and the library will not invent one.
  • componentValues: Current display text per component. A shorter or null list leaves the remaining boxes empty.
  • typeName: The C# type name the per-box border colour is resolved from, so the row carries the same type colour a scalar box of that type would.
  • editable: False renders the row read-only: no editor opens on a click.

C#
public void CancelEditor()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:204-219

Abandons the whole edit and restores EVERY component to the value it opened with, as Escape does. Records nothing.

C#
public void CommitEditor()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:190-198

Commits the whole row as Enter or a click outside would. No-op when no editor is open, and refused while any component is invalid, exactly as the scalar box refuses.

C#
public string ComponentLabel(int index)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:147

The label drawn to the left of component index.

C#
public string ComponentMessage(int index)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:158

The anchored message shown under component index, or empty.

C#
public string ComponentText(int index)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:150-151

The text currently in component index’s editor, or its committed value.

C#
public bool IsComponentInvalid(int index)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:154-155

True when component index is showing the coral invalid treatment.

C#
public void OpenEditor(int index)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:170-184

Opens the editor on one component, closing any editor already open on another component of this row. The value preselects so typing replaces it.

SetComponentValues(IReadOnlyList<string> values)

Section titled “SetComponentValues(IReadOnlyList<string> values)”
C#
public void SetComponentValues(System.Collections.Generic.IReadOnlyList<string> values)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CompositeLiteralElement.cs:224-232

Replaces the row’s committed values, e.g. after the host re-derived them from source.

Category: Low-level runtime

C#
enum BitQuirky.Graph.GraphView.Views.CardBodyGradient.Direction

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:58-64

Underlying type: int

Direction of the linear gradient ramp.

C#
Diagonal = 1

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:63

Top-left -> bottom-right (used on the family-colored decorator).

C#
Vertical = 0

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/CardBodyGradient.cs:61

Top -> bottom (used on the dark body / label slot).

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.EdgeLayer

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:76-2649

Inherits: VisualElement

UI Toolkit painter for committed graph edges and the active connection ghost.

Responsibilities:

  • Render committed edges using generic routing, treatment, and interaction state.
  • Render an explicitly configured solid or dashed temporary connection edge.
  • Expose deterministic edge geometry for host hit testing and focused tests.

Does NOT:

  • Own graph selection, validation, connection semantics, or product-specific styling.
  • Mutate graph definitions or persist rendered geometry.

C#
public float ActiveStrokeWidth { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:247

Stroke width of an edge marked active.

C#
public float DisabledStrokeOpacity { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:253

Opacity of a disabled edge, from 0 to 1.

C#
public float DisabledStrokeWidth { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:251

Stroke width of a disabled edge.

C#
public float FailureStrokeWidth { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:249

Stroke width of an edge marked failed.

C#
public bool HasTempEdge { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:733

True while a connection-drag ghost wire is showing (feature round-trip 067). Read-only observation surface for hosts and tests.

C#
public UnityEngine.Color? HoveredColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:255

Color of a hovered edge, or null to lift the edge’s own color instead of replacing it.

C#
public System.Guid? HoveredEdgeId { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:468

Feature round-trip 067 (US6): the currently hovered edge, or null when none. Observation surface for the host and tests.

C#
public float HoveredStrokeWidth { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:257

Stroke width of a hovered edge.

C#
public float IdleStrokeOpacity { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:245

Opacity of an edge at rest, from 0 to 1.

C#
public float IdleStrokeWidth { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:243

Stroke width of an edge at rest.

C#
public BitQuirky.Graph.GraphView.GraphPortPlacement PortPlacement { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:224

Controls the default bend axis for curved and orthogonal wires. Left/right ports bend horizontally; top/bottom ports bend vertically.

C#
public BitQuirky.Graph.GraphView.GraphEdgeRouting Routing { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:208

How wires are routed between their endpoints.

C#
public UnityEngine.Color SelectedColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:259

Color of a selected edge.

C#
public float SelectedStrokeWidth { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:261

Stroke width of a selected edge.

C#
public bool SharedTrunkBus { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:218

Opt-in tree-bus rendering for Orthogonal + TopBottom wires. Sibling edges that share a source port paint one trunk from the port and one horizontal bar, and each edge’s own identity (paint, hover, hit-test polyline) is only its junction-to-target drop, so sibling strokes never restate and overlap the shared run. Edges carrying user reroutes keep their full independent polyline. Default off so existing consumers render unchanged.

C#
public System.Func<System.Guid, UnityEngine.Color?> TargetArrowheadColorResolver { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:2201

Optional per-edge fill for opt-in target arrowheads, keyed by the edge’s identity. Consulted before TargetArrowheadOverrideColor; a null result for an edge falls back to the layer-wide override, then to the edge’s resolved stroke. Lets a consumer highlight one edge’s head (a state machine’s last-fired transition) while the rest keep the layer color.

C#
public UnityEngine.Color? TargetArrowheadOverrideColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:2190

Paints the opt-in filled arrowhead at an edge’s target endpoint. The arrow points along the incoming tangent of the final segment (polyline direction for straight / orthogonal routing, bezier end tangent otherwise) and fills with the same resolved stroke color.

C#
public UnityEngine.Color TempEdgeColor { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:739

The color the ghost wire currently draws in. Meaningful only while HasTempEdgeis true.

C#
public float TempEdgeDashLength { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:745

Configured visible dash length for the connection ghost.

C#
public float TempEdgeGapLength { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:748

Configured gap length for the connection ghost.

C#
public UnityEngine.Vector2 TempEdgeStart { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:756

The content-local point the ghost wire currently draws FROM (feature round-trip 067). For a pin drag this is the source pin; for a knot drag-out it is the knot’s visual anchor. Meaningful only while HasTempEdgeis true. Read-only surface for tests.

C#
public BitQuirky.Graph.GraphView.GraphConnectionGhostStyle TempEdgeStyle { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:742

Stroke pattern currently configured for the connection ghost.

C#
public UnityEngine.Color? TreatmentColorActive { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:234

Color used for Active. Null = caller color at full intensity.

C#
public UnityEngine.Color? TreatmentColorDisabled { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:240

Color used for Disabled.

C#
public UnityEngine.Color? TreatmentColorFailure { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:237

Color used for Failure.

C#
public UnityEngine.Color? TreatmentColorIdle { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:231

Optional color override used forIdle. Null means “fall back to caller-supplied color at reduced opacity”.

C#
public const float DefaultActiveStrokeWidth = 1.75

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:83

Default stroke width of an edge marked active.

C#
public const float DefaultDisabledStrokeOpacity = 0.3

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:89

Default opacity of a disabled edge, from 0 to 1.

C#
public const float DefaultDisabledStrokeWidth = 1.25

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:87

Default stroke width of a disabled edge.

C#
public const float DefaultFailureStrokeWidth = 1.5

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:85

Default stroke width of an edge marked failed.

C#
public const float DefaultHoveredColorLift = 0.2

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:95

How far a hovered edge’s color is lifted toward white when no explicit hover color is set, from 0 to 1.

C#
public const float DefaultHoveredStrokeWidth = 3

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:93

Default stroke width of a hovered edge.

C#
public const float DefaultIdleStrokeOpacity = 0.55

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:81

Default opacity of an edge at rest, from 0 to 1.

C#
public const float DefaultIdleStrokeWidth = 1.25

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:79

Default stroke width of an edge at rest.

C#
public const float DefaultSelectedStrokeWidth = 4

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:91

Default stroke width of a selected edge.

C#
public const float DefaultSelfLoopClearance = 24

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:123

Graph-space clearance between a default self-loop and its owning node card.

C#
public const float DefaultTempEdgeDashLength = 8

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:97

Default visible-stroke length for an opt-in dashed connection ghost.

C#
public const float DefaultTempEdgeGapLength = 5

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:100

Default empty-space length for an opt-in dashed connection ghost.

C#
public const float MinimumTempEdgePatternLength = 0.5

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:107

Smallest supported dash or gap length in graph-space pixels. Shorter patterns cannot make reliable progress at float precision and would create an excessive number of Painter2D strokes during repaint.

C#
public const float NonHoveredFadeOpacity = 0.25

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:114

Feature round-trip 067 (US6): alpha multiplier applied to every non-hovered edge while a wire is hovered, so the hovered wire is visually dominant . Applied on top of each edge’s normal resolved color.

EdgeLayer(GraphEdgeRouting routing, GraphPortPlacement portPlacement)

Section titled “EdgeLayer(GraphEdgeRouting routing, GraphPortPlacement portPlacement)”
C#
public EdgeLayer(BitQuirky.Graph.GraphView.GraphEdgeRouting routing = Bezier, BitQuirky.Graph.GraphView.GraphPortPlacement portPlacement = LeftRight)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:286-299

Builds an empty wire layer stretched to fill its parent and taking no pointer input, so gestures pass through to the nodes above it.routingis the path shape wires take, defaulting to curved, andportPlacementtells the layer which node edges pins sit on so it can leave each wire at the right angle. Both remain settable afterwards through the matching properties.

AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment)

Section titled “AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment)”
C#
public void AddEdge(System.Guid edgeId, UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, System.Collections.Generic.IReadOnlyList<UnityEngine.Vector2> userReroutes, BitQuirky.Graph.GraphView.Views.EdgeTreatment treatment)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:345-348

Register an edge with explicit pin-side information for both endpoints. The pin sides decide which way the bezier tangents leave / enter their endpoints: a right-side pin always pushes its tangent to the right, a left-side pin always pushes its tangent to the left. This produces the familiar Blueprint loop-back curve when a target sits behind its source instead of routing the wire through either card.

AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment, bool showTargetArrowhead)

Section titled “AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment, bool showTargetArrowhead)”
C#
public void AddEdge(System.Guid edgeId, UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, System.Collections.Generic.IReadOnlyList<UnityEngine.Vector2> userReroutes, BitQuirky.Graph.GraphView.Views.EdgeTreatment treatment, bool showTargetArrowhead)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:354-357

Register an edge with an opt-in filled arrowhead drawn at the target endpoint. Preserves the established cross-node route contract.

AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment, bool showTargetArrowhead, Rect? selfLoopNodeBounds)

Section titled “AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment, bool showTargetArrowhead, Rect? selfLoopNodeBounds)”
C#
public void AddEdge(System.Guid edgeId, UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color, bool isControl, bool isSelected, bool isHovered, bool fromPortIsOnRightSide, bool toPortIsOnRightSide, System.Collections.Generic.IReadOnlyList<UnityEngine.Vector2> userReroutes, BitQuirky.Graph.GraphView.Views.EdgeTreatment treatment, bool showTargetArrowhead, UnityEngine.Rect? selfLoopNodeBounds)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:365-383

Register an edge with an opt-in filled arrowhead drawn at the target endpoint, pointing along the incoming route. Supplying graph-spaceselfLoopNodeBounds gives an unrouted same-node edge a selectable perimeter loop outside that rectangle; explicituserReroutesremain authoritative.

AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes)

Section titled “AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes)”
C#
public void AddEdge(System.Guid edgeId, UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide, System.Collections.Generic.IReadOnlyList<UnityEngine.Vector2> userReroutes)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:320-323

Feature 037 : register an edge with an optional ordered list of user-authored reroute knots in graph space. When the list is non-empty, the edge is drawn as a chain of N+1 cubic Bezier segments through[from, ...userReroutes, to], mirroring the desktop (BezierPathHelper.BuildChainedBezierPath) behavior.

AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment)

Section titled “AddEdge(Guid edgeId, Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide, IReadOnlyList<Vector2> userReroutes, EdgeTreatment treatment)”
C#
public void AddEdge(System.Guid edgeId, UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide, System.Collections.Generic.IReadOnlyList<UnityEngine.Vector2> userReroutes, BitQuirky.Graph.GraphView.Views.EdgeTreatment treatment)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:331-334

Feature 014 : register an edge with an explicit EdgeTreatmentso the layer can pick width and color from -’s idle / active / failure / disabled table without baking BT semantics into the renderer.

AddEdge(Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide)

Section titled “AddEdge(Vector2 from, Vector2 to, Color color, bool isControl, bool isSelected, bool isHovered, bool toPortIsOnRightSide)”
C#
public void AddEdge(UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color, bool isControl, bool isSelected = false, bool isHovered = false, bool toPortIsOnRightSide = false)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:309-312

Registers an edge with no identity, no reroutes, and the default treatment, drawn from a right-side source pin. Edges accumulate untilClearEdges; an edge added without an id cannot be hit-tested back to a model edge.

Parameters

  • from: Source endpoint in layer-local space.
  • to: Target endpoint in layer-local space.
  • isControl: True for a flow wire, false for a data wire.

C#
public void ClearEdges()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:446-462

Drops every registered edge and the hover state, then repaints. Computed self-loop routes are retained by edge id so re-registering the same edge does not pay to recompute them.

C#
public void ClearTempEdge()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:720-727

Hides the temporary edge and restores its default solid configuration.

C#
public System.Collections.Generic.IEnumerable<(System.Guid EdgeId, UnityEngine.Vector2[] Polyline)> EnumerateEdgePolylines()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:820-826

Feature 037: enumerates the currently-rendered edge list so the reroute manipulator can perform a hit-test against it when the user double-clicks. Returns the polyline approximation of each rendered curve plus its id.

C#
public System.Collections.Generic.IEnumerable<(System.Guid EdgeId, int SegmentOrdinal, UnityEngine.Vector2[] Polyline)> EnumerateEdgeSegmentPolylines()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:1254-1306

Enumerates each rendered Bezier segment separately so hit testing can map a double-click back to the exact reroute insertion ordinal used by Unity’s renderer, rather than approximating with desktop-side curve math.

C#
public System.Collections.Generic.IReadOnlyList<(UnityEngine.Vector2 From, UnityEngine.Vector2 To)> GetTempEdgeDashSegments()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:763-771

Returns the exact line fragments used to paint the dashed connection ghost. Solid or hidden ghosts return an empty list. The returned geometry is a fresh snapshot and cannot mutate renderer state.

C#
public void SetHoveredEdge(System.Guid? edgeId)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:477-486

Feature round-trip 067 (US6): sets the hovered edge (null clears). While set, the matching edge draws with the hovered stroke width / color-lift and every other edge fades toNonHoveredFadeOpacity. The edge list is NOT rebuilt, only repainted. The host drives this from mouse-move nearest-edge hit-testing and clears it on exit, drag start, and re-render.

SetTempEdge(Vector2 from, Vector2 to, Color color)

Section titled “SetTempEdge(Vector2 from, Vector2 to, Color color)”
C#
public void SetTempEdge(UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:656-665

Shows the historical solid temporary connection edge. This overload preserves the established contract for existing callers.

SetTempEdge(Vector2 from, Vector2 to, Color color, GraphConnectionGhostStyle style, float dashLength, float gapLength)

Section titled “SetTempEdge(Vector2 from, Vector2 to, Color color, GraphConnectionGhostStyle style, float dashLength, float gapLength)”
C#
public void SetTempEdge(UnityEngine.Vector2 from, UnityEngine.Vector2 to, UnityEngine.Color color, BitQuirky.Graph.GraphView.GraphConnectionGhostStyle style, float dashLength, float gapLength)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:673-717

Shows a temporary connection edge with an explicit stroke pattern. Dashed rendering requires finite dash and gap lengths of at least MinimumTempEdgePatternLength. Solid rendering preserves the historical connection ghost exactly.

TryGetEdgeColor(Guid edgeId, out Color color)

Section titled “TryGetEdgeColor(Guid edgeId, out Color color)”
C#
public bool TryGetEdgeColor(System.Guid edgeId, out UnityEngine.Color color)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:777-786

Feature 037: returns the color currently registered for the given edge so reroute knots can be painted in the same color as the wire they sit on.

TryGetEdgeMidpoint(Guid edgeId, out Vector2 midpoint)

Section titled “TryGetEdgeMidpoint(Guid edgeId, out Vector2 midpoint)”
C#
public bool TryGetEdgeMidpoint(System.Guid edgeId, out UnityEngine.Vector2 midpoint)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:1219-1247

Finds the halfway point along one rendered edge in graph-space coordinates, using the same polyline as hit testing. Default self-loop geometry is reused without allocation; explicit reroutes and the active routing mode remain authoritative.

TryGetEdgeRenderStyle(Guid edgeId, out float strokeWidth, out Color color)

Section titled “TryGetEdgeRenderStyle(Guid edgeId, out float strokeWidth, out Color color)”
C#
public bool TryGetEdgeRenderStyle(System.Guid edgeId, out float strokeWidth, out UnityEngine.Color color)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:793-813

Returns the resolved stroke width and color for a rendered edge after semantic treatment and interaction-state overrides are applied. This lets embedders keep edge-attached affordances visually consistent with the actual wire.

TryGetEffectiveEdgeStroke(Guid edgeId, out float width, out Color drawColor)

Section titled “TryGetEffectiveEdgeStroke(Guid edgeId, out float width, out Color drawColor)”
C#
public bool TryGetEffectiveEdgeStroke(System.Guid edgeId, out float width, out UnityEngine.Color drawColor)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:495-509

Feature round-trip 067 (US6): the width + draw color an edge resolves to under the currentSetHoveredEdgestate (observation / test surface). The hovered edge takes the hovered stroke; every other edge is faded by NonHoveredFadeOpacity; with no hover set each edge resolves exactly as it renders. Returns false when no edge carriesedgeId.

TryPickDataEdge(Vector2 point, float tolerance, out Guid edgeId)

Section titled “TryPickDataEdge(Vector2 point, float tolerance, out Guid edgeId)”
C#
public bool TryPickDataEdge(UnityEngine.Vector2 point, float tolerance, out System.Guid edgeId)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:519-543

Feature 062 (E2): picks the closest rendereddataedge whose curve passes withintolerance of point(both in this layer’s content-local / graph space). Execution edges and id-less edges are ignored. Returns the nearest match so a host can let the user grab a specific wire out of a fan-out to pull it off its source (the split gesture). The lib makes no decision about what the grab means.

TryPickEdge(Vector2 point, float tolerance, out Guid edgeId, out bool isExecution)

Section titled “TryPickEdge(Vector2 point, float tolerance, out Guid edgeId, out bool isExecution)”
C#
public bool TryPickEdge(UnityEngine.Vector2 point, float tolerance, out System.Guid edgeId, out bool isExecution)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:610-636

Feature round-trip 067 (US2): picks the closest rendered edge, data OR execution, whose curve passes withintolerance of point (both in this layer’s content-local / graph space), reporting whether the winner is an execution wire viaisExecution. Unlike TryPickDataEdge this does not skip control edges, so a host can resolve an Alt+click or wire right-click on any wire back to its edge. Id-less edges are ignored. Overlapping wires tie-break to the LAST-DRAWN edge (the one painted on top), matching the <= distance test the reroute picker already uses. The lib makes no decision about what the pick means.

TryPickExecutionEdge(Vector2 point, float tolerance, out Guid edgeId)

Section titled “TryPickExecutionEdge(Vector2 point, float tolerance, out Guid edgeId)”
C#
public bool TryPickExecutionEdge(UnityEngine.Vector2 point, float tolerance, out System.Guid edgeId)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:554-598

Picks the nearest renderedexecutionedge whose sampled curve falls within tolerance of point. Data and id-less edges are ignored. Unlike the last-drawnTryPickDataEdge / TryPickEdge tie-break, exact-distance ties resolve by the stable edge ID, so an embedding product that routes execution relationships gets a pick that never depends on document or render registration order. A negative or NaN tolerance is rejected. The lib makes no decision about what the pick means. Purely additive to the Round Trip 067 pickers.

Category: Low-level runtime

C#
enum BitQuirky.Graph.GraphView.Views.EdgeTreatment

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:23-39

Underlying type: int

Semantic treatment a consumer attaches to an edge so the layer can pick width + color without baking tool-specific semantics into the renderer. Each treatment maps to a width tier and an optional override color; the color the caller passes in still applies toDefault.

Round Trip note: keep the treatment palette generic. Round Trip can use the same values to mean “method-call edge”, “data edge”, etc. via the same mapping rules.

C#
Active = 2

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:32

Active-path edge from root to currently executing node.

C#
Default = 0

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:26

Caller-supplied color, idle (thin) stroke.

C#
Disabled = 4

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:38

Edge relationship itself is unavailable; do not use for pruned execution branches.

C#
Failure = 3

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:35

Edge relationship itself is invalid or failed; do not use for node execution results.

C#
Idle = 1

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:29

Idle / unvisited branch: slightly dimmer, thin stroke.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.GradientBackground

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:15-75

Inherits: VisualElement

Renders a horizontal gradient background from left (lighter) to right (darker).

C#
public GradientBackground(UnityEngine.Color baseColor)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:24-28

Builds the background frombaseColor, which is the light left end of the ramp; the darker right end is derived from it. Call UpdateBaseColorto change it later.

C#
public void UpdateBaseColor(UnityEngine.Color newBaseColor)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:34-38

Updates the base color and triggers a repaint. Used when MakeArray element type is resolved.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.GraphAssetIconView

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphAssetIconView.cs:30-155

Inherits: VisualElement

UI Toolkit image view for mandatory graph-library icon assets.

Responsibilities:

  • Load an editor texture or vector from a package asset path.
  • Render it at the size set by the caller.
  • Optionally flatten vector vertex color to white so caller tint is the exact output color.
  • Render every SVG from its shipped VectorImage so approved geometry has one source.
  • Own generated monochrome masks for the editor domain and destroy them before code unload or Editor shutdown; Play Mode transitions retain the still-valid cache.

Does NOT:

  • Provide fallback icons when an asset is missing.
  • Own toolbar interaction behavior.

C#
public GraphAssetIconView(string assetPath)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphAssetIconView.cs:59-62

Shows the shipped icon atassetPathwith the asset’s own colors, so a multi-color icon arrives intact. The element takes no pointer input.

GraphAssetIconView(string assetPath, bool useAsMonochromeMask)

Section titled “GraphAssetIconView(string assetPath, bool useAsMonochromeMask)”
C#
public GraphAssetIconView(string assetPath, bool useAsMonochromeMask)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphAssetIconView.cs:70-74

Shows the shipped icon atassetPath, with useAsMonochromeMasktrue flattening its vertex colors to white so the caller’s tint is the exact output color - the form to use for a glyph that must follow the theme. False keeps the asset’s own colors.

C#
public void SetAssetPath(string assetPath)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphAssetIconView.cs:80-83

Shows the icon atassetPath, sized to fit this element, keeping the asset’s own colors.

SetAssetPath(string assetPath, bool useAsMonochromeMask)

Section titled “SetAssetPath(string assetPath, bool useAsMonochromeMask)”
C#
public void SetAssetPath(string assetPath, bool useAsMonochromeMask)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphAssetIconView.cs:90-109

Shows the icon atassetPath, sized to fit this element.

Parameters

  • useAsMonochromeMask: Flatten a vector icon’s own colors to white so the caller’s tint is the exact output color. Ignored for raster assets.

Category: Low-level runtime

C#
enum BitQuirky.Graph.GraphView.Views.GraphEdgeLabelPlacementResult

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:44-60

Underlying type: int

Outcome of resolving a collision-free graph-edge label center against node-card bounds.

C#
EdgeNotFound = 1

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:50

No rendered edge has the requested identity.

C#
InvalidRequest = 0

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:47

The request contains non-finite, negative, or empty geometry.

C#
NearRoute = 3

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:56

The label fits within the requested perpendicular fallback bound.

C#
NoAvailableFit = 4

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:59

No collision-free center exists on the route or inside the fallback bound.

C#
OnRoute = 2

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/EdgeLayer.cs:53

The label fits on the rendered route nearest its path midpoint.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.GraphIconView

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphIconView.cs:19-570

Inherits: VisualElement

Theme-colored 16 by 16 vector icon painter.

Responsibilities:

  • Reproduce the supplied PDF SVG geometry at any requested size.
  • Inherit the resolved UI Toolkit text color for theme support.

Does NOT:

  • Load assets or provide a glyph-font fallback.

C#
public string Key { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphIconView.cs:33

The icon identity this view paints, without the icon- file prefix.

Responsibilities:

  • Let conformance harnesses verify a painted glyph is the exact approved export rather than a lookalike shape.

Does NOT:

  • Redraw or restyle anything; it only reads back the construction key.

C#
public GraphIconView(string key)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphIconView.cs:43-46

Paints the icon namedkey (without the icon-prefix) in the element’s resolved text color, so it follows the theme. An unknown or empty key falls back to the generic node glyph rather than painting nothing.

C#
public GraphIconView(string key, UnityEngine.Color color)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GraphIconView.cs:53-56

Paints the icon namedkey in color, fixed rather than following the resolved text color. Use it where the glyph carries its own meaning, such as a type or family tint.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.GridBackground

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:36-298

Inherits: VisualElement

Background layer of the GraphView canvas - paints the canvas fill and a two-tier (minor + major) grid keyed to the current pan / zoom transform.

Responsibilities:

Does NOT:

  • Draw nodes or edges - those live on sibling layers.
  • Decide color values. Consumers pass colors through the public properties; the new design-system path sets them from --bq-bg / --bq-grid / --bq-grid-dot.

Remarks

Round Trip: keep usingGridBackground. The two-tier rhythm with token-driven color is design-system-neutral; pick the values from a Round Trip-specific stylesheet’s--bq-* overrides.

C#
public UnityEngine.Color BackgroundColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:69

The canvas fill painted behind the grid.

C#
public int DotInterval { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:135

Controls dot placement on the dot-grid. Default0means “dots at everyMajorLineFrequencyth intersection”

  • the pre-existing rhythm preserved for behavior-tree / statechart consumers. Any positive value places a dot at every intersection where both axis indices satisfy i % DotInterval == 0; e.g. 1peppers the canvas with a dot at every grid step,2at every other step.

Remarks

Round Trip / feature 043 Phase 6: set to1for an at-every-intersection soft pattern. The shared preferences page (FR-064b, Phase 33) will surface this as the “dot frequency” preference; it stays a code-only knob here.

C#
public UnityEngine.Color GridColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:73

The color of major grid lines.

C#
public UnityEngine.Color GridDotColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:93

Optional dot tint drawn at major-line intersections. Maps to the design-system --bq-grid-dot token when the host installs design-system colors viaApplyDesignSystemColors.

C#
public float GridDotRadius { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:95

Radius in pixels of a grid dot.

C#
public int MajorLineFrequency { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:66

Number of minor steps between major lines; every nth line is drawn as a major one, and dots fall on the same rhythm unless a dot interval is set.

C#
public UnityEngine.Color MinorGridColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:82-86

The color of minor grid lines. Unset, it derives fromGridColorat a fraction of its alpha, which is what gives the two-tier grid its rhythm without a second token; setting it pins the minor lines independently and the derivation stops applying.

C#
public bool ShowGridDots { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:102

Toggles the dot-on-grid treatment. The design-system host turns this on (seeApplyDesignSystemColors); pre-design-system consumers keep the lines-only look.

C#
public bool ShowGridLines { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:118

Toggles whether the two-tier (minor + major) line grid is drawn at all. Defaults totrueto preserve every pre-existing consumer (behavior tree, statechart, generic graph hosts). A consumer that wants the design’s dots-only soft grid sets this tofalse; the canvas fill and any dots configured via ShowGridDotscontinue to paint.

Remarks

Round Trip / feature 043 Phase 6: flipped tofalseso the canvas reads as a soft dot grid without a competing line rhythm. God Complex keeps the default so its existing tree view is unaffected ( / parity).

C#
public float Spacing { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:64

Distance in graph units between adjacent grid lines, before zoom.

C#
public GridBackground()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:153-162

Builds the background stretched to fill its parent, taking no pointer input so every canvas gesture passes through to the content above it. It starts with the two-tier line grid on, dots off, and the viewport at no pan and unit zoom.

ApplyDesignSystemColors(Color bg, Color grid, Color gridDot)

Section titled “ApplyDesignSystemColors(Color bg, Color grid, Color gridDot)”
C#
public void ApplyDesignSystemColors(UnityEngine.Color bg, UnityEngine.Color grid, UnityEngine.Color gridDot)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:185-193

Apply the design-system color palette in one call. bg maps to--bq-bg, grid to --bq-grid, and gridDot to--bq-grid-dot. Enables ShowGridDots.

C#
public void UpdateTransform(UnityEngine.Vector2 pan, float zoom)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GridBackground.cs:172-177

Re-aligns the grid to the canvas viewport and repaints, so lines and dots stay locked to graph space as the reader pans and zooms.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.GuardRingElement

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GuardRingElement.cs:24-183

Inherits: VisualElement

Non-color guard decoration: a ring painted over a data pin’s circle to mark it as guarded. The ring overlays the pin absolutely so it never changes node geometry, pin position, or wire routing (geometry-neutral). TheStateselects the ring STYLE so the four guard states read apart in grayscale rather than relying on color:

  • Guarded - an even dashed ring.
  • Misconfigured - a dashed ring with a clear open gap (an incomplete ring).
  • Tripped - a continuous, heavier ring.

Stroke color is resolved from the shared--bq-guard-*design tokens (a faint secondary cue only) so the decoration carries no inline-baked color.

C#
public BitQuirky.Graph.PortGuardState State { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GuardRingElement.cs:47-58

Which guard state the ring draws, selecting the stroke pattern that tells the states apart without color. Setting the state it already holds does nothing; a change repaints.

C#
public GuardRingElement(BitQuirky.Graph.PortGuardState state)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GuardRingElement.cs:65-74

Builds the ring already showingstate, sized to overlay a pin’s circle. It takes no pointer input, because the shield beside it is the click target, and it is positioned so it never shifts node geometry or wire routing.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.GuardShieldElement

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GuardShieldElement.cs:24-214

Inherits: VisualElement

Non-color guard decoration: a small shield glyph rendered in the pin’s gutter (the shared external-badge layer) marking a guarded pin and acting as the click target that opens the per-pin guard popover. The Stateselects the shield SHAPE so the guard states read apart in grayscale rather than relying on color:

The glyph color is resolved from the shared--bq-guard-*design tokens (a faint secondary cue only); the decoration bakes in no color.

C#
public BitQuirky.Graph.PortGuardState State { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GuardShieldElement.cs:52-64

Which guard state the shield draws, selecting the glyph shape that tells the states apart without color. Setting the state it already holds does nothing; a change swaps the state class, refreshes the tooltip, and repaints.

C#
public event System.Action Clicked

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GuardShieldElement.cs:45

Raised when the shield is clicked. Hosts subscribe to open the per-pin guard popover (the shield is the popover click target).

C#
public GuardShieldElement(BitQuirky.Graph.PortGuardState state)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/GuardShieldElement.cs:71-83

Builds the shield already showingstate, with that state’s class and tooltip applied. Unlike the ring, it accepts pointer input: it is the click target that raisesClickedso a host can open its guard popover.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.InlineLiteralElement

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:14-845

Inherits: VisualElement

UI Toolkit element for displaying inline literal values on data pins. Displays as a bordered text field with type-aware styling.

C#
public BitQuirky.Graph.LiteralDisplayKind DisplayKind { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:24

The kind of literal (String, Numeric, Boolean, etc.) for styling.

C#
public bool InvitesEntry { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:243

True when an unset pin still draws its box as an empty entry field, because the host says a value belongs in this slot.

C#
public bool IsEditing { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:232

True while the in-place editor is open.

C#
public bool IsInvalid { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:117

True while the editor holds a value the host validator rejected: commit is blocked and the coral treatment plus the anchored message are shown.

C#
public bool IsUnset { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:237

True when this element has no committed literal, so no pill should be visible.

C#
public string TypeName { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:29

The C# type name for color lookup.

C#
public System.Func<string, BitQuirky.Graph.GraphView.LiteralValidationResult> Validator { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:55

Feature round-trip 070 (contract C4.2): host-supplied validator consulted on every keystroke and again at commit. The library holds no opinion about C#; when this is null there is no validation and every value commits (Principle X: one validator, never two that can disagree). Bound per-port by the host fromGraphViewOptions.LiteralValidator.

C#
public string Value { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:19

The literal value to display.

C#
public event System.Action<string> Committed

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:58

Raised when an edit is committed with a new, valid value (the C# literal text).

C#
public event System.Action Dismissed

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:65

Raised when an edit closes without committing (Escape, or an unchanged value). Lets a host drop an editor it opened on an otherwise-empty pin instead of leaving an invisible element attached.

C#
public event System.Action<bool> ValidityChanged

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:72

Feature round-trip 070 : raised when the open editor crosses between valid and invalid. The argument is true when it just became invalid. The host uses this to mark the pin’s pending change invalid so Compile stays blocked while an editor holds an unacceptable value.

C#
public const string ToggleClass = "inline-literal__toggle"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:105

The checkbox a bool literal draws in place of a value label. Public so a host can style or find it, in the same spirit as the other element classes above.

C#
public const float UnsetEditorWidth = 120

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:80

Width the editor opens at, comfortably wider than the resting pill so a value is easy to type. The resting pill hugs its content (as small as possible); opening the editor grows the box to this floor in both the unset and set cases. Set inline because the open-versus-resting width is a dynamic per-state choice, not static chrome.

InlineLiteralElement(string value, LiteralDisplayKind displayKind, string typeName, string tooltipText, bool editable, bool startsUnset, bool invitesEntry)

Section titled “InlineLiteralElement(string value, LiteralDisplayKind displayKind, string typeName, string tooltipText, bool editable, bool startsUnset, bool invitesEntry)”
C#
public InlineLiteralElement(string value, BitQuirky.Graph.LiteralDisplayKind displayKind, string typeName, string tooltipText = null, bool editable = false, bool startsUnset = false, bool invitesEntry = false)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:137-227

Creates a new inline literal element.

Parameters

  • value: The formatted literal value to display.
  • displayKind: The kind of literal for styling.
  • typeName: The C# type name for color lookup.
  • tooltipText: Optional tooltip text (for truncated values).
  • startsUnset: Feature round-trip 070: true when the pin carries no committed literal. The pill is not drawn until a value commits; callOpenEditorto raise the editor on it.
  • invitesEntry: True when an unset pin should still draw an empty entry box at rest, rather than nothing. This is the difference between “no value, so show nothing” and “no value, and one belongs here”: the host sets it on a pin whose slot accepts a constant, so the field is visible and clickable without the engineer first having to guess that the pin is editable. Ignored once a value is committed, when the ordinary pill is drawn either way.

C#
public void CancelEditor()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:289-297

Closes the open editor and restores the value it opened with, as Escape does. No-op when no editor is open.

C#
public void CommitEditor()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:275-283

Commits the open editor as a click-out would, without relying on focus movement. A host uses this to close one pin’s editor before opening another (feature round-trip 070, ). No-op when no editor is open. A value that fails validation stays open, exactly as it does for Enter.

C#
public void OpenEditor()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:250-267

Raises the in-place editor without requiring a click on the pill, which is how an editor opens on an unset pin: there is no pill to click, so the host opens it from the port click (feature round-trip 070, /).

C#
public void SetDisplayKind(BitQuirky.Graph.LiteralDisplayKind kind)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:757-762

Updates the display kind and applies corresponding styling.

C#
public void SetTypeName(string typeName)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:767-771

Updates the type name and applies corresponding color.

C#
public void SetValue(string value)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineLiteralElement.cs:731-752

Updates the displayed value.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.InlineObjectReferenceElement

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:48-606

Inherits: VisualElement

UI Toolkit element for the object-reference COMBO drawn on a data pin: an inline bordered box showing which project asset the pin holds (Round Trip feature 072).

Sibling ofInlineLiteralElementand third member of the family InlineReferenceElementbelongs to: a literal is a constant value, an inline reference is the name of a read, and this is an asset the consumer resolved. It is a COMBO, not a pill: “pill” means the GET-node visual and must not be used for this control in code, tests, or documentation.

The library holds no opinion about what an asset is or whether one is assignable. The consumer supplies the display name, the accepted type name, and the two state answers; this element only renders them and reports clicks. That is what keeps every asset concept out of the shared layer.

C#
public UnityEngine.UIElements.VectorImage ClearIcon { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:175-186

The trailing icon for the clear action, supplied by the host.

C#
public System.Func<System.Collections.Generic.IReadOnlyList<UnityEngine.Object>, bool> DropFilter { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:155

Host-supplied answer to “would this pin accept these dragged objects?”, consulted while a drag hovers and again at the drop. The library holds NO opinion about asset types: it draws the accept or refuse feedback the verdict implies and nothing more, exactly as the inline literal editor defers to the host’s validator. Null means no drop is ever accepted, which is the fail-closed default for a host that has not opted in.

C#
public bool HasReference { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:215

True when this combo carries a reference, resolved or missing.

C#
public bool IsDropTarget { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:380

True while a drag that would be accepted is hovering.

C#
public bool IsRefusingDrop { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:383

True while a drag that would be refused is hovering.

C#
public UnityEngine.UIElements.VectorImage LocateIcon { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:161-172

The trailing icon for the locate action, supplied by the host. Null hides the action rather than drawing a fallback glyph (Principle X: the library invents no art).

C#
public string ProjectPath { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:199-207

Where the referenced asset currently lives in the host’s project, shown on hover beneath the name. Optional: a consumer that cannot supply one gets a tooltip carrying just the name and type, which is the same shape one line shorter.

C#
public string ReferenceName { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:212

The displayed asset name; empty when the combo holds no reference.

C#
public BitQuirky.Graph.GraphView.Views.ObjectReferenceComboState State { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:218-228

Which of the four board states this combo is currently in.

C#
public string TypeName { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:192

The accepted type name, shown on hover rather than in the combo.

C#
public event System.Action ClearRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:140

Raised by the trailing clear action: the consumer empties the reference. Available on a missing reference too, which is what keeps that state recoverable rather than a dead end.

C#
public event System.Action Clicked

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:127

Raised when the combo is clicked and the click means something: the consumer opens its picker. A suppressed combo never raises it, so the wired no-op is a property of the control rather than a rule every consumer has to remember .

C#
public event System.Action<System.Collections.Generic.IReadOnlyList<UnityEngine.Object>> Dropped

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:146

Raised when assets are dropped on the combo andDropFilteraccepted them. The consumer performs the assignment; the library only carries the gesture.

C#
public event System.Action LocateRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:134

Raised by the trailing locate action: the consumer reveals the asset in its project browser. Only ever raised while the combo shows a reference that resolves, because there is nothing to reveal otherwise.

C#
public const string ActionsClass = "inline-object-reference__actions"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:75

The trailing action row holding the locate and clear buttons.

C#
public const string BorderClass = "inline-object-reference__border"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:54

The bordered box that carries the state’s border treatment.

C#
public const string ChevronClass = "inline-object-reference__chevron"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:90

The dropdown chevron drawn on an unset combo.

C#
public const string ClearActionClass = "inline-object-reference__clear"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:81

The trailing action that empties the reference.

C#
public const string DropRefusedModifierClass = "inline-object-reference--drop-refused"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:87

Applied while a drag the combo would REFUSE hovers over it.

C#
public const string DropTargetModifierClass = "inline-object-reference--drop-target"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:84

Applied while a drag the combo would ACCEPT hovers over it.

C#
public const string GlyphClass = "inline-object-reference__glyph"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:60

The asset kind mark shown on an assigned combo.

C#
public const string LocateActionClass = "inline-object-reference__locate"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:78

The trailing action that reveals the asset in the host’s project browser.

C#
public const string MissingModifierClass = "inline-object-reference--missing"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:69

Warning treatment for a combo whose stored reference does not resolve.

C#
public const string RootClass = "inline-object-reference"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:51

Block class for the combo.

C#
public const string SuppressedModifierClass = "inline-object-reference--suppressed"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:72

Faded, non-interactive treatment for a combo a wire supplies.

C#
public const string UnnamedMissingText = "missing asset"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:107

What a missing combo shows when it has no last known name. Deliberately NOT the type prompt: a broken reference must never be mistaken for an empty pin.

C#
public const string UnsetModifierClass = "inline-object-reference--unset"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:66

Placeholder treatment for a combo holding no reference.

C#
public const string UnsetPrompt = "select asset"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:101

What an unset combo prompts with: the action available, not the type on offer. An empty object pin is a thing to DO something about, and a prompt that says so reads as a control rather than as a label. The accepted type moves to the tooltip, where it stops competing with the prompt for the same few pixels.

C#
public const string ValueClass = "inline-object-reference__value"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:57

The displayed asset name, or the placeholder prompt when unset.

C#
public const string WarnGlyphClass = "inline-object-reference__warn-glyph"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:63

The warning mark shown on a combo whose reference no longer resolves.

C#
public const string WiredText = "wired"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:93

What a suppressed combo says: the wire is the value.

InlineObjectReferenceElement(string referenceName, string typeName, bool isMissing, bool isSuppressed)

Section titled “InlineObjectReferenceElement(string referenceName, string typeName, bool isMissing, bool isSuppressed)”
C#
public InlineObjectReferenceElement(string referenceName, string typeName, bool isMissing = false, bool isSuppressed = false)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:237-302

Creates the combo for one pin.

Parameters

  • referenceName: The asset’s display name, or empty when the pin holds none.
  • typeName: The accepted type, used as the unset prompt and for the border color.
  • isMissing: True when the stored reference no longer resolves.
  • isSuppressed: True when a wire supplies the pin.

PerformDropForTesting(IReadOnlyList<Object> dragged)

Section titled “PerformDropForTesting(IReadOnlyList<Object> dragged)”
C#
public bool PerformDropForTesting(System.Collections.Generic.IReadOnlyList<UnityEngine.Object> dragged)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:366-377

Runs the drop path fordraggedexactly as a release over the combo does, so the accept and refuse verdicts can be asserted without synthesizing drag events. Returns whether the drop was accepted.

C#
public void RaiseClickForTesting()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:343

Raises the click path exactly as a mouse press does, so the suppressed no-op can be asserted without synthesizing pointer events.

SetReference(string referenceName, bool isMissing)

Section titled “SetReference(string referenceName, bool isMissing)”
C#
public void SetReference(string referenceName, bool isMissing)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:332-337

Updates the reference in place, moving the combo between states without rebuilding it. The suppressed state is fixed at construction because it is a property of the pin’s wiring, which the consumer re-derives on every graph build.

WouldAcceptDrop(IReadOnlyList<Object> dragged)

Section titled “WouldAcceptDrop(IReadOnlyList<Object> dragged)”
C#
public bool WouldAcceptDrop(System.Collections.Generic.IReadOnlyList<UnityEngine.Object> dragged)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:351-359

The verdict this combo would give a drag carryingdragged: true accepts, false refuses. A suppressed combo always refuses, because the wire is the value; otherwise the host filter decides, and its absence refuses (Principle X: no drop is accepted by default).

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.InlineReferenceElement

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineReferenceElement.cs:17-277

Inherits: VisualElement

UI Toolkit element for displaying an inline reference on a data pin - a single-use field/parameter/local read collapsed onto the pin. Renders as a heading-only pill (the reference name) whose border is colored by the reference’s data type. Parallel toInlineLiteralElement, which displays inline constants.

C#
public bool Invalid { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineReferenceElement.cs:33

When true, the reference no longer resolves to a value in scope and is painted in the error color instead of its data-type color.

C#
public string Text { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineReferenceElement.cs:22

The reference text to display (e.g. “_audioSource”).

C#
public string TypeName { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineReferenceElement.cs:27

The C# type name used for the data-type color lookup.

C#
public event System.Action<string> Committed

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineReferenceElement.cs:42

Raised when an edit is committed with a new, non-empty identifier (the variable name).

InlineReferenceElement(string text, string typeName, string tooltipText, bool invalid, bool editable)

Section titled “InlineReferenceElement(string text, string typeName, string tooltipText, bool invalid, bool editable)”
C#
public InlineReferenceElement(string text, string typeName, string tooltipText = null, bool invalid = false, bool editable = false)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineReferenceElement.cs:62-96

Builds the pill.textis the reference name shown and null becomes empty;typeNameselects the border color from the data-type palette; tooltipTextis the optional hover explanation; invalidtrue paints it in the error color instead, for a reference that no longer resolves; andeditabletrue lets a click open an edit field that raisesCommitted, while false leaves the pill read-only.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.LiteralBoxChrome

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:27-90

The one definition of a literal box’s chrome, shared by the single-value InlineLiteralElementand the multi-component CompositeLiteralElement.

A composite value’s component boxes must be visually IDENTICAL to a scalar literal box: same border colour rule, same corner radius, same padding, same font, same focus emphasis, same coral invalid treatment. Two copies of that would drift, and the drift would show up as a row of boxes that no longer matched the scalar box beside it.

Almost all of the chrome is USS, so the sharing is by CLASS NAME: both elements add the same inline-literal*classes and pick up the same rules from GraphViewStyles.uss. The only chrome that cannot live in USS is the per-C#-type border colour, because it depends on a runtime type name the library holds no opinion about, and that one rule lives here so it is written once.

C#
public const string BorderClass = "inline-literal__border"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:33

The bordered surface inside a literal box.

C#
public const string EditClass = "inline-literal__edit"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:39

The in-place edit field inside the border.

C#
public const string EditingModifierClass = "inline-literal--editing"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:42

Set while an editor is open: lightened surface, focus ring, and glow.

C#
public const string InvalidModifierClass = "inline-literal--invalid"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:45

Set while the box holds a value the host validator rejected: coral border, warm-red text.

C#
public const string RootClass = "inline-literal"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:30

The block class every literal box carries.

C#
public const string ToastClass = "inline-literal__toast"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:48

The anchored validation message hanging below the box.

C#
public const string ValueClass = "inline-literal__value"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:36

The resting value label inside the border.

ApplyTypeBorderColor(VisualElement border, string typeName)

Section titled “ApplyTypeBorderColor(VisualElement border, string typeName)”
C#
public static void ApplyTypeBorderColor(UnityEngine.UIElements.VisualElement border, string typeName)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:58-72

Paintsborder’s four edges with the pin colour for typeName.

The documented C# exception to Principle VII’s “no inline colour” rule (contract C5.7): the colour is resolved from a runtime type name, which USS cannot express.

ClearTypeBorderColor(VisualElement border)

Section titled “ClearTypeBorderColor(VisualElement border)”
C#
public static void ClearTypeBorderColor(UnityEngine.UIElements.VisualElement border)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralBoxChrome.cs:78-89

Drops the inline border colour so the.inline-literal--invalidUSS rule cascades through. An inline colour would otherwise win over USS.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.LiteralCheckbox

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralCheckbox.cs:25-108

Inherits: VisualElement

The checkbox a boolean value draws: a tick when true, nothing when false, sized to sit inside a literal box in place of a value label.

The tick is drawn rather than imported because it is two straight strokes, which is the shape class this codebase draws in code, and because Unity’s own toggle checkmark is a themed texture that does not resolve in the graph’s panel: it renders as an empty square wherever the graph is captured or hosted, so a ticked box looked identical to an unticked one. Colour comes from USS through resolvedStyle, so it follows whatever text tone surrounds it.

The surrounding box is the caller’s: this element draws the mark alone, so a literal pill’s border and a rail row’s field can each act as the outline. One control for both, because a bool that reads one way on a pin and another way in the rail is two controls to learn.

C#
public bool Value { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralCheckbox.cs:54

True when the box is ticked.

C#
public event System.Action<bool> Toggled

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralCheckbox.cs:51

Raised when the engineer ticks or unticks the box, never when a value arrives.

C#
public const string RootClass = "literal-checkbox"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralCheckbox.cs:28

The USS class every literal checkbox carries.

LiteralCheckbox(bool value, bool interactive)

Section titled “LiteralCheckbox(bool value, bool interactive)”
C#
public LiteralCheckbox(bool value, bool interactive)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralCheckbox.cs:36-48

Builds the box already showingvalue. interactivetrue makes it focusable and clickable, so a click raises Toggled; false leaves it a display-only mark that takes no pointer input, which is the form to use on a read-only surface.

C#
public void SetValueWithoutNotify(bool value)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/LiteralCheckbox.cs:57-66

Moves the box without raising Toggled, for a value arriving from source.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.MenuDropShadow

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/MenuDropShadow.cs:46-165

Inherits: VisualElement

Feathered drop shadow for menu-style surfaces that float above the main canvas - overflow popups, class pickers, context menus, inspector flyouts, anywhere we want a surface to read as detached from the chrome it overlaps. Renders the same concentric rounded-rect Painter2D stack asCardDropShadow, but the alpha and extents are roughly doubled so the shadow reads at the larger working distance these surfaces hover at.

Responsibilities and non-responsibilities mirror CardDropShadow: paint N concentric fills via Painter2D, position the element with inline negative insets so it feathers outside the parent’s bounds, do not render any of the parent’s body / border / glyph chrome. The only behavioral difference is the recipe constants.

Tuning lives in the const block below for the same reason called out inCardDropShadow: USS custom-property resolution is unreliable on elements whose USS rule does not reference those variables for some other property.

C#
public MenuDropShadow()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/MenuDropShadow.cs:70-90

Builds the shadow, already absolutely positioned with the negative insets that let it spill outside its parent surface, so a consumer needs no extra USS class to make it visible. It takes no pointer input.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.NodeCommentIndicator

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentIndicator.cs:41-133

Inherits: VisualElement

Small amber speech-bubble glyph pinned to the top-right corner of any node card or GET pill whose comment text is non-empty. The silhouette is the importedicon-comment.svgdesign export, rendered as a tintedVectorImagebackground rather than a hand-drawnPainter2Dpath (feature 064 / ), so the canvas glyph and the rail-slot nib share one design source at their two sizes (14 px canvas / 11 px rail).

The glyph stacks three layers so it stays legible on every node-family header color and reads as a peel-off note:

  • a soft amber glow (hidden at rest, revealed on hover),
  • a dark drop-shadow offset a hair below the body,
  • the amber body itself.

All three are the SAME VectorImage tinted differently through USS (--bq-node-comment-glyph / -hover / -glow), so there is a single source of truth for the silhouette and the color tokens. The hover state is mirrored from the parent NodeView via the--hovermodifier class so cursor travel between the node, the glyph, and the siblingNodeCommentPostIt keeps both in their hover treatment.

Does NOT:

  • Provide a fallback glyph when the asset is missing - a missing required asset fails fast (Constitution X / ).
  • Own the post-it popup; that’s a sibling element.
  • Animate position, scale, or rotation; those are USS transitions on the glyph’s own classes.

C#
public NodeCommentIndicator(float sizePx = 14)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentIndicator.cs:75-93

Builds the glyph atsizePxpixels square, which includes the small ring of padding that widens the hover target beyond the visible bubble. It accepts pointer input, so hover and activation fire only over the glyph rather than anywhere on the card.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.NodeCommentPostIt

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentPostIt.cs:27-646

Inherits: VisualElement

Hover-reveal sticky-note popup that displays the parser-derived source comment for a graph node. Companion to NodeCommentIndicator.

Layering (document order, back → front):

  1. SharedMenuDropShadowprimitive - extends past the root via inline negative absolute insets.
  2. Opaque paper element - owns the vertical 3-stop gradient, rim highlights, and corner-curl decoration. Fills the root. Because UI Toolkit renders children AFTER the parent’s generateVisualContent, the paper must be a child rather than painted in the root - otherwise the shadow’s inner concentric ring would lay a 50 % black overlay on the visible body.
  3. Meta label (XML DOC / COMMENT tag).
  4. Body label (composed comment text).

C#
public event System.Action<UnityEngine.Vector2> OnSizeChanged

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentPostIt.cs:77

Raised when the user finishes a resize drag on the post-it. Carries the new(width, height)in canvas-space pixels already clamped to the min-size floor. Consumers persist these values via the host’s layout store.

C#
public NodeCommentPostIt()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentPostIt.cs:84-143

Builds an empty post-it with its shadow, paper, scrolling body, and resize grip in place. It swallows pointer-down on the body so dragging the note never pans the canvas or starts a marquee; the caller sizes and positions it and fills in its sections.

C#
public void SetContent(string body, string kindLabel)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentPostIt.cs:151-155

Populate the popup with a single composed comment section. Empty body leaves the popup blank (consumer is expected to call this with the non-empty text fromNodeDefinition.CommentText). Used for member / operation / statement nodes (single source).

SetSections(string memberLabel, string memberBody, string readLocalLabel, string readLocalBody)

Section titled “SetSections(string memberLabel, string memberBody, string readLocalLabel, string readLocalBody)”
C#
public void SetSections(string memberLabel, string memberBody, string readLocalLabel, string readLocalBody)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentPostIt.cs:165-185

Populate the popup with up to two labelled sections for a GET pill (feature 064 / ): the shared member comment first, then a visible dashed divider, then the read-local note - each with its own source label so the two are never conflated. A member-only or read-local-only pill renders just the one relevant section (no divider).

C#
public void SetSize(float width, float height)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeCommentPostIt.cs:330-348

Apply a previously-saved size from the host’s layout store. Values<= 0mean “use the default” and clear any explicit override so USS-controlled natural size takes over.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.NodeView

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:82-3444

Inherits: VisualElement

The visual for one node: its card chrome, title, port rows, and the slots a host can decorate. The view reads the node definition it was built from and never writes back to it; position changes arrive throughUpdatePosition.

C#
public UnityEngine.UIElements.VisualElement ActiveGlow { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:254

Glow ring element activated when the node is the active node.

C#
public string AnchoredMessage { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:130-133

The text currently hanging under this card, or empty when the node carries none.

C#
public UnityEngine.UIElements.VisualElement BadgeSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2855

Slot for the family badge chip floating centered on the card’s top edge. The badge is the node’s input-port anchor: parent edges visually plug into it.

C#
public UnityEngine.Color BaseColor { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:450

The base color for this node (used for gradient and contrast calculations).

C#
public UnityEngine.Color BodyColor { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:460

The body background color for this node (midpoint of gradient, for contrast calculations).

C#
public UnityEngine.UIElements.VisualElement BodyContainer { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:118

The card’s body area below the header.

C#
public BitQuirky.Graph.GraphView.Views.CardBodyGradient BodyGradient { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:302

Vertical body-shading overlay sitting inside the label slot (raised-card recipe). Painter2D-rendered linear gradient running top -> bottom across the dark body half of the card.

C#
public UnityEngine.UIElements.VisualElement BottomStatusStripSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:251

Slot for the bottom status strip (last-result color).

C#
public UnityEngine.UIElements.VisualElement CardContentSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2873

Visible content surface a host draws node content on, beneath the card’s name and metadata. Additive and closed by default: a card whose host never calls SetCardContentis unchanged, both in what it draws and in its height.

C#
public BitQuirky.Graph.GraphView.Views.CardChevronExtension ChevronExtension { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:317

Pentagon-shaped decorator silhouette for Condition and Selector families. Painter2D-rendered family-color fill

  • diagonal gradient + 1px chevron rim. Created on every raised card but hidden by USS unless the ed-node-card--silhouette-condition class is on the card.

C#
public BitQuirky.Graph.GraphView.Views.NodeCommentIndicator CommentIndicator { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:260

Amber speech-bubble glyph pinned to the node’s top-right corner when the adapter supplies a non-empty CommentText. Null when the node has no attached source comment.

C#
public BitQuirky.Graph.GraphView.Views.NodeCommentPostIt CommentPostIt { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:266

Hover-reveal sticky-note popup showing the comment body. Null when the node has no attached source comment. Defaults to right-of-node placement; the host can flip it via SetCommentPopupOnLeft.

C#
public UnityEngine.UIElements.VisualElement ContainedActionRowSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2866

Slot for the SM contained action row (darker band at the card bottom carrying the state’s action). Hidden by default.

C#
public UnityEngine.UIElements.VisualElement ContentContainer { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:188

Holds host-supplied content between the port columns; a custom renderer fills this.

C#
public BitQuirky.Graph.GraphView.Views.CardDropShadow DropShadow { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:293

Feathered drop-shadow sibling element (raised-card recipe). Painter2D-rendered; positions itself based on the --bq-node-card-shadow-*-extent USS tokens.

C#
public UnityEngine.UIElements.VisualElement EyebrowChipLeadingContent { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:195

Optional leading-content slot inside the floating eyebrow chip. Hosts may populate it with a compact glyph while the shared graph package continues to own chip geometry. Null when this node has no floating eyebrow chip.

C#
public UnityEngine.UIElements.VisualElement FaceClip { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2859

Rounded clip container that owns the card face ramp and the bottom status strip so both inherit the card’s corner radius.

C#
public BitQuirky.Graph.GraphView.Views.VerticalRampView FaceRamp { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2862

Vertical face gradient painter (card-face tokens).

C#
public UnityEngine.Vector2 GraphPosition { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:114

Current rendered graph-space position; never writes the supplied node.

C#
public UnityEngine.Color HeaderColor { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:455

The header background color for this node (darker version of base color).

C#
public UnityEngine.UIElements.VisualElement HeaderContainer { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:116

The card’s header band, holding the title and any header decorations.

C#
public BitQuirky.Graph.GraphView.Views.CardBodyGradient IconWellGradient { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:310

Diagonal decorator-shading overlay sitting inside the icon well (raised-card recipe). Painter2D-rendered linear gradient running top-left -> bottom-right across the family-colored decorator half of the card. Hidden when the card has the chevron silhouette - ChevronExtension paints the decorator surface in that mode.

C#
public UnityEngine.UIElements.VisualElement IconWellSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:239

Slot for the family-colored icon well that lives on the raised-card variant. Populated by EnableRaisedCardChrome; null for the legacy CodeFlow / Tree variants.

C#
public UnityEngine.UIElements.VisualElement InputContainer { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:184

Holds the input port views, in the order the definition lists them.

C#
public UnityEngine.UIElements.VisualElement InsetHighlight { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:296

Inset top highlight element (raised-card recipe).

C#
public UnityEngine.UIElements.VisualElement LabelSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:242

Slot for the node-name + family caption.

C#
public UnityEngine.UIElements.VisualElement LifecycleRing { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:123

The leading lifecycle ring glyph, or null when this node is not a lifecycle entry.

C#
public UnityEngine.UIElements.VisualElement MetadataSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:245

Slot for compact metadata (e.g. tick ordinal badge).

C#
public BitQuirky.Graph.NodeDefinition Node { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:112

The definition this card was built from.

C#
public UnityEngine.UIElements.VisualElement OutputContainer { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:186

Holds the output port views, in the order the definition lists them.

C#
public UnityEngine.UIElements.VisualElement Ring { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2893

The portrait card’s 1px ring, painted above the shadow and the face.

C#
public UnityEngine.UIElements.VisualElement SelectedGlow { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:288

Glow ring element activated when the node is selected.

C#
public UnityEngine.UIElements.VisualElement StartMarkSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2890

Slot for the SM START designation mark (magenta pill floating above the badge). Hidden by default.

C#
public UnityEngine.UIElements.VisualElement StatusPillSlot { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:248

Slot for the result status pill.

C#
public UnityEngine.UIElements.Label TitleLabel { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:120

The label showing the node’s title.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.NodeView> OnCommentGlyphActivated

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:285

Fires when the user clicks the comment glyph on this node (feature 064 / ). The host resolves the activation route from the node’s identity - selecting the member and focusing the rail comment slot for a rail-authored member comment, or just selecting the node and showing the post-it for an operation / statement node or a read-local-only pill.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.NodeView, UnityEngine.Vector2> OnCommentPopupResized

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:275

Fires when the user finishes dragging the comment-popup resize grip. Carries the source NodeView and the new (width, height). The host subscribes and persists the size into the layout file alongside node positions and edge reroutes.

C#
public const string AnchoredMessageClass = "node-anchored-message"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:109

USS class on the message hanging under a node card. Hosts style it from their own sheet via this class; the library ships the geometry (absolute, under the card, out of the layout) and leaves the wording and the reason for it entirely to the caller.

C#
public const string LifecycleRingClass = "node-lifecycle-ring"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:89

USS class on the leading ring glyph an entry node carries whenIsLifecycleEntry is set. Distinct from the per-pin guard decoration so runtime-invocation marking and pin validation state never share a class; hosts style the ring from their own sheet via this class.

C#
public const string ValidationErrorNodeClass = "ed-node-card--validation-error"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:102

Class added to a card whose consumer flaggedHasValidationError, opting it into the existing .ed-node-card--validation-error treatment.

C#
public const string VisualOnlyNodeClass = "node-visual-only"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:96

USS class added to the node card whenIsVisualOnly is set (a pasted / not-yet-persisted node). Hosts style it - typically a dashed provisional outline - from their own sheet via this class.

NodeView(NodeDefinition node, GraphPortPlacement portPlacement, GraphNodePresentation presentation, GraphTheme theme, Func<PortDefinition, GraphPortGlyphStyle> portGlyphStyleResolver)

Section titled “NodeView(NodeDefinition node, GraphPortPlacement portPlacement, GraphNodePresentation presentation, GraphTheme theme, Func<PortDefinition, GraphPortGlyphStyle> portGlyphStyleResolver)”
C#
public NodeView(BitQuirky.Graph.NodeDefinition node, BitQuirky.Graph.GraphView.GraphPortPlacement portPlacement = LeftRight, BitQuirky.Graph.GraphView.GraphNodePresentation presentation = CodeFlow, BitQuirky.Graph.GraphView.GraphTheme theme = null, System.Func<BitQuirky.Graph.PortDefinition, BitQuirky.Graph.GraphView.GraphPortGlyphStyle> portGlyphStyleResolver = null)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:478-1138

Creates a node view with optional per-port glyph-style resolution for glyphs rendered directly by the node header.

Parameters

  • node: Node definition to render.
  • portPlacement: Port placement used by the graph.
  • presentation: Node presentation family.
  • theme: Optional graph theme; null uses the established dark theme.
  • portGlyphStyleResolver: Optional resolver for node-owned port glyphs. Null preserves filled glyphs.

ApplyFamilyModifiers(string familyClass, string silhouetteClass)

Section titled “ApplyFamilyModifiers(string familyClass, string silhouetteClass)”
C#
public void ApplyFamilyModifiers(string familyClass, string silhouetteClass)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3241-3253

Apply a family / silhouette modifier class to the card. Caller passes the class names declared in NodeFamilies.uss (e.g.ed-node-card--family-actionand ed-node-card--silhouette-rect). Previous family / silhouette classes are removed so the call is idempotent across rebuilds (..).

Remarks

Round Trip: pass any modifier class declared in the shared NodeFamilies.uss. The graph library does not validate the name; the design-system stylesheet picks up whatever class the consumer attaches.

ApplyInlineLiteralAutoSize(float computedWidth, float minWidth, float maxWidth)

Section titled “ApplyInlineLiteralAutoSize(float computedWidth, float minWidth, float maxWidth)”
C#
public void ApplyInlineLiteralAutoSize(float computedWidth, float minWidth = 220, float maxWidth = 200)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2585-2606

Applies auto-sizing based on inline literal content. Uses the computed dimensions from the layout engine to expand node width as needed.

Parameters

  • computedWidth: Width computed by MSAGLGraphLayoutService.ComputeInlineContentWidth.
  • minWidth: Minimum node width (default from LayoutSettings).
  • maxWidth: Maximum inline literal width for truncation.

C#
public void ClearAnchoredMessage()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:172-181

Removes the message under this card. Safe on a node that never had one.

C#
public void ClearIconWellContent()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3276-3288

Remove every child of the icon well. Use this in place of IconWellSlot.Clearso future reserved chrome can stay centralized here.

C#
public override bool ContainsPoint(UnityEngine.Vector2 localPoint)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2538-2541

Hit-tests the card’s own rectangle, so a point over an overhanging decoration such as a floating chip or hanging message does not count as being over the node.

C#
public void EnablePortraitBadgeChrome()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2901-3096

Adopt the portrait-badge card chrome: gradient face, family badge chip floating on the top edge, neutral selection ring, blue running ring + halo, bottom status strip. Additive sibling of EnableRaisedCardChrome; consumers pick one chrome.

C#
public void EnableRaisedCardChrome()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2709-2840

Convert this node into the raised-card variant that the new behavior-tree / design-system editor consumes. Adds (or reveals) the icon well, label, metadata, status pill, and bottom status strip slots; installs the inset highlight, drop shadow, and optional glow ring siblings.

Safe to call on an existing CodeFlow or Tree node - the method only manipulates the new slot elements and the depth recipe siblings. Visual presence of the slots after this call is opt-in: consumers populate the slots themselves so nodes without a metadata payload don’t render an empty box.

Remarks

Round Trip: the slots are generic. Round Trip can call this method to inherit the depth recipe and fill the slots with project-specific content (label, glyph, status info).

C#
public void SetActiveGlow(bool active)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3199-3214

Toggle the active glow ring. Caller asserts at most one node carries the active flag per tick .

C#
public void SetBadgeGlyphAssetPath(string assetPath)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3135-3149

Replace the badge chip glyph with a package icon asset.

C#
public void SetCardContent(UnityEngine.UIElements.VisualElement content)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3107-3132

Draw one host-owned element on the card’s content surface, or clear it with null.

A node renderer’s content is otherwise written into a container some layouts hide, so it is present in the hierarchy and never drawn. Content supplied here is drawn, and the card grows to hold it rather than clipping it: the height the card declared without content becomes its floor, and clearing restores that exact height. A card this is never called on keeps everything it had.

C#
public void SetCommentPopupOnLeft(bool flipLeft)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:1418-1427

Toggle the comment popup to the left of the node for nodes close to the visible canvas right edge. Caller decides the distance threshold at layout time because only the host knows the canvas extent. Safe to call when no comment is attached.

C#
public void SetDecoratorVetoed(bool vetoed)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3296-3306

Toggle the decorator-vetoed dim treatment on this card and (via downstream class propagation) its child branch . The class is idempotent - repeated calls with the same value are no-ops.

C#
public void SetFamilyGlyphAssetPath(string assetPath)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3258-3269

Replace the icon-well content with a package icon asset.

SetFloatingEyebrowChipVisible(bool isVisible)

Section titled “SetFloatingEyebrowChipVisible(bool isVisible)”
C#
public void SetFloatingEyebrowChipVisible(bool isVisible)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:203-231

Shows or hides the floating eyebrow chip and keeps a Tree node’s incoming connection anchored to the complete visible stack. A hidden chip returns the connection to the card top; a visible chip keeps the connection above the chip.

Parameters

  • isVisible: Whether the chip participates in the visible node stack.

SetRaisedCardText(string nodeName, string familyCaption)

Section titled “SetRaisedCardText(string nodeName, string familyCaption)”
C#
public void SetRaisedCardText(string nodeName, string familyCaption)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3163-3193

Sets the two lines of a raised card: the node’s own name and the caption naming the family it belongs to, creating the labels on first use. Null text clears a line. Does nothing on a card without the raised layout.

C#
public void SetSelected(bool selected)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2363-2384

Applies or removes the selected treatment. Deselecting also releases a comment popup that was pinned open by a click, so hover alone decides its visibility again.

C#
public void SetSelectedGlow(bool selected)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3221-3225

Toggle the cool-blue selected outline ring. Distinct in hue from the active glow so the two states are unambiguous when they coincide .

C#
public void SetStartMarkVisible(bool visible)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3152-3156

Toggle the SM START designation mark above the badge.

SetWarningIcon(bool show, string tooltipText, bool isError, Action onClick)

Section titled “SetWarningIcon(bool show, string tooltipText, bool isError, Action onClick)”
C#
public void SetWarningIcon(bool show, string tooltipText = null, bool isError = false, System.Action onClick = null)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:3316-3398

Show or hide the warning icon overlay on the card . The icon is anchored to the card’s top-right corner and (optionally) carries a click handler the consumer supplies - e.g. opening the validation chip detail popover. Repeated calls update tooltip + click handler without re-creating the element.

C#
public void ShowAnchoredMessage(string message)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:145-169

Hangsmessageunder this card, replacing any message already there. Blank or null text clears instead of drawing an empty line.

The element is absolutely positioned against the card’s bottom edge, so marking a node changes nothing about its size, its layout, or where its wires land, and it ignores picking so it can never swallow a click meant for the graph underneath. The library holds no opinion about what deserves a message: it renders the caller’s own words.

C#
public void SuppressCommentPopup()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:1544-1551

Force this node’s comment popup closed and drop its hover state (feature round-trip 067). The host calls this when a wire drag begins so a sticky-note that was open at drag start does not hang over the canvas while wiring; the drag’s mouse capture then blocks a new hover from re-opening it. Keyboard focus state is left untouched (an intentional, non-hover open path).

C#
public void UpdatePosition(UnityEngine.Vector2 position)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2480-2484

Moves the card to a graph-space position. Layout only: the node definition is left unchanged, so a caller that wants the move persisted writes it back itself.

UpdateSize(float newWidth, float newHeight)

Section titled “UpdateSize(float newWidth, float newHeight)”
C#
public void UpdateSize(float newWidth, float newHeight)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2551-2576

Updates the node size when inline content changes. Called after inline literal values are set to resize the node appropriately.

Parameters

  • newWidth: The new width to apply (computed by layout service).
  • newHeight: The new height to apply (computed by layout service).

C#
public void UpdateTypeColor(string newTypeName)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/NodeView.cs:2491-2532

Updates the node color when the data type changes (e.g., MakeArray type resolution). Called when ElementTypeResolved event is raised from the Core model.

Parameters

  • newTypeName: The new element type name (e.g., “int”, “string”).

Category: Low-level runtime

C#
enum BitQuirky.Graph.GraphView.Views.ObjectReferenceComboState

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:17-30

Underlying type: int

The four resting states of an object-reference combo, in the order the design board draws them.

C#
Assigned = 1

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:23

A reference that resolves: asset glyph plus name, sized to content.

C#
Missing = 2

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:26

A reference that no longer resolves: warning treatment, name kept verbatim.

C#
Suppressed = 3

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:29

A wire supplies the pin: faded, reads as wired, and the click is a no-op.

C#
Unset = 0

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/InlineObjectReferenceElement.cs:20

No reference yet: the prompt and chevron that open the picker.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.PlayTriangle

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PlayTriangle.cs:19-149

Inherits: VisualElement

Rounded execution-port triangle supporting filled and hollow glyph treatments.

Responsibilities:

  • Paint the shared execution-port geometry in its configured glyph style.
  • Expose fill, stroke, and stroke-width values for host theming.

Does NOT:

  • Decide which ports are hollow or assign domain meaning to either treatment.
  • Handle connection gestures or retain graph model state.

C#
public UnityEngine.Color FillColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PlayTriangle.cs:32-43

Fill color used by a filled triangle.

C#
public BitQuirky.Graph.GraphView.GraphPortGlyphStyle GlyphStyle { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PlayTriangle.cs:29

Configured fill treatment for this triangle.

C#
public UnityEngine.Color StrokeColor { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PlayTriangle.cs:46-57

Outline color used by a hollow triangle.

C#
public float StrokeWidth { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PlayTriangle.cs:60-76

Outline width used by a hollow triangle.

C#
public const float DefaultStrokeWidth = 1.5

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PlayTriangle.cs:26

Default outline width for a hollow execution glyph.

PlayTriangle(GraphPortGlyphStyle glyphStyle)

Section titled “PlayTriangle(GraphPortGlyphStyle glyphStyle)”
C#
public PlayTriangle(BitQuirky.Graph.GraphView.GraphPortGlyphStyle glyphStyle = Filled)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PlayTriangle.cs:79-95

Creates an execution glyph with the requested fill treatment.

Category: Low-level runtime

C#
readonly struct BitQuirky.Graph.GraphView.Views.PortView.PortLinkTarget

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1208-1232

One wire terminating at this pin, described for the break menu: a displayLabelplus the counterpart endpoint identity the host needs to locate the edge. Immutable value type.

C#
public System.Guid CounterpartNodeId { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1228

The node id of the wire’s other end.

C#
public string CounterpartPortId { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1231

The port id of the wire’s other end.

C#
public string Label { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1225

Human label for the “Break link to

PortLinkTarget(string label, Guid counterpartNodeId, string counterpartPortId)

Section titled “PortLinkTarget(string label, Guid counterpartNodeId, string counterpartPortId)”
C#
public PortLinkTarget(string label, System.Guid counterpartNodeId, string counterpartPortId)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1217-1222

Describes one wire at this pin for the break menu. labelis the wording shown to the reader and null becomes empty; counterpartNodeId and counterpartPortId identify the wire’s other end, which is what the host needs to find the edge, since the pin knows only its own side.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.PortView

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:25-1995

Inherits: VisualElement

UI Toolkit row and glyph for one graph port.

Responsibilities:

  • Render an input or output port’s glyph, label, badges, and interaction states.
  • Apply the explicitly supplied filled or hollow glyph treatment.
  • Surface port-scoped authoring gestures to the graph host.

Does NOT:

  • Choose product-specific glyph meaning or mutate the graph model.
  • Own connection validation or persistence.

C#
public System.Func<BitQuirky.Graph.PortDefinition, BitQuirky.Graph.GraphView.LiteralValidationResult> CompositeClearValidator { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:681-694

Feature round-trip 071: asked whether this port’s composite row may commit as a CLEAR, which is what every component being blank means. Bound by the host from GraphViewOptions.CompositeClearValidator. Setting it propagates to a row that already exists. Null permits every clear, because whether a source slot can legally become empty is a question only the host can answer.

C#
public System.Func<BitQuirky.Graph.PortDefinition, int, string, BitQuirky.Graph.GraphView.LiteralValidationResult> CompositeComponentValidator { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:650-663

Feature round-trip 071: the per-COMPONENT validator for a composite literal row, bound by the host fromGraphViewOptions.CompositeComponentValidator. The index identifies which component, so the host applies that component’s own declared type. Setting it propagates to a row that already exists. Null leaves the row unvalidated, which is the library’s standing position on C#: it holds no opinion (Principle X).

C#
public BitQuirky.Graph.GraphView.Views.CompositeLiteralElement CompositeLiteral { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:46

The composite component row attached to this port, or null when the port carries no composite value (feature round-trip 071).

C#
public UnityEngine.UIElements.VisualElement ExternalBadgeContainer { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1736

The flex-row container holding every external badge attached to this pin (default-value decorator, type badge, format- specifier, null-forgiving, etc.). Lives in the graph content layer so the badges render OUTSIDE the card chrome and can be stacked above the edge layer when the host draws edges over cards. Null until the firstAttachExternalBadge call.

C#
public BitQuirky.Graph.GraphView.GraphPortGlyphStyle GlyphStyle { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:58

Fill treatment selected for this port’s glyph.

C#
public BitQuirky.Graph.GraphView.Views.GuardRingElement GuardRing { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:566

The dashed guard ring overlaying this pin’s circle, or null when the pin is unguarded. Geometry-neutral overlay.

C#
public BitQuirky.Graph.GraphView.Views.GuardShieldElement GuardShield { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:573

The guard gutter shield for this pin, or null when the pin is unguarded. The shield is the click target that opens the per-pin guard popover; subscribe viaGuardShieldClicked.

C#
public BitQuirky.Graph.GraphView.Views.InlineLiteralElement InlineLiteral { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:40

The inline value editor on this pin, or null when the port takes no typed value.

C#
public BitQuirky.Graph.GraphView.Views.InlineObjectReferenceElement InlineObjectReference { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:55

The object-reference COMBO drawn on this pin (Round Trip feature 072), or null when the consumer did not mark the port as accepting one. Not a pill: see InlineObjectReferenceElement.

C#
public BitQuirky.Graph.GraphView.Views.InlineReferenceElement InlineReference { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:48

The inline reference field on this pin, or null when the port carries no reference.

C#
public bool IsAddPinButton { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:34

True when this row is the affordance that adds another operand, not a real port.

C#
public bool IsExecution { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:32

True when the port carries flow rather than a value.

C#
public bool IsInput { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:30

True when the port sits on the node’s input side.

C#
public System.Collections.Generic.IReadOnlyList<BitQuirky.Graph.GraphView.Views.PortView.PortLinkTarget> LinkTargets { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1245

The wires currently terminating at this pin, set by the host through SetLinkTargets. Null or empty means the pin is unconnected and offers no break menu.

C#
public bool LiteralEntryInvited { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:591

True when this port may draw an empty entry box at rest, because the host’s GraphViewOptions.PortClickPredicateaccepts it and a click can therefore open the editor.

C#
public System.Func<string, BitQuirky.Graph.GraphView.LiteralValidationResult> LiteralValidator { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:601-612

Feature round-trip 070: the per-port literal validator, bound by the host from GraphViewOptions.LiteralValidator. Setting it propagates to an inline literal element that already exists, so it takes effect whether the element was built for a set pin at construction or is raised lazily on an unset pin. Null leaves the editor unvalidated (Principle X: one validator).

C#
public UnityEngine.UIElements.VectorImage ObjectReferenceClearIcon { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:744-755

Host-supplied icon for the combo’s trailing clear action.

C#
public System.Func<System.Collections.Generic.IReadOnlyList<UnityEngine.Object>, bool> ObjectReferenceDropFilter { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:761-772

Host-supplied answer to “would this pin accept these dragged objects?”, bound from GraphViewOptions.ObjectReferenceDropFilter. Null refuses every drop.

C#
public UnityEngine.UIElements.VectorImage ObjectReferenceLocateIcon { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:730-741

Host-supplied icon for the combo’s trailing locate action, bound from GraphViewOptions.ObjectReferenceLocateIcon. Null hides the action rather than drawing a fallback glyph.

C#
public BitQuirky.Graph.PortDefinition Port { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:28

The definition this row was built from.

C#
public UnityEngine.UIElements.Label PortLabel { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:38

The label beside the pin, or null when the port is drawn unlabeled.

C#
public UnityEngine.UIElements.VisualElement PortVisual { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:36

The pin glyph itself, which is what an edge attaches to.

C#
public UnityEngine.UIElements.Label SplitToggle { get; private set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:828

Renders the ▶/▼ expand/collapse glyph used to indicate splittable struct pins and the current expansion state. Suppressed when the port is not splittable. Feature 038 / US1 + US3.

C#
public UnityEngine.UIElements.VectorImage WiredLiteralNoEntryIcon { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:621

Feature round-trip 070 (FR-015a): the host-supplied no-entry glyph shown on hover of a wired, literal-eligible input pin, bound fromGraphViewOptions.WiredLiteralNoEntryIcon. The mark only ever appears on a pin the host flaggedIsWiredand IsLiteralEligible; on every other pin, and when null, nothing is drawn. The library composes no meaning: it renders whatever glyph the host hands it.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> BreakAllLinksRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1251

Raised when the user invokes “Break Node Link(s)” on this pin, asking the host to remove every wire at the pin under one undo step.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView, BitQuirky.Graph.GraphView.Views.PortView.PortLinkTarget> BreakLinkToRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1257

Raised when the user invokes “Break link to ” on this pin, asking the host to remove the single wire to that counterpart.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> Clicked

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:793

Raised when this pin was pressed and released without the pointer travelling far enough to become a connection drag, and only for a port the host marked click-eligible through GraphViewOptions.PortClickPredicate. No connection is created for such a press.

The library assigns no meaning to the click; the host decides what one is for.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView, System.Collections.Generic.IReadOnlyList<string>> CompositeLiteralCommitted

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:670

Raised once when this pin’s composite literal row commits, carrying every component’s text in render order. One event for the whole row, never one per component: the host composes these into a single literal, stages a single pending edit, and records a single undo entry.

C#
public event System.Action GuardShieldClicked

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:579

Raised when this pin’s guard shield is clicked. Hosts subscribe to open the per-pin guard popover.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView, string> InlineLiteralCommitted

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:639

Raised when this pin’s inline literal is edited and committed with a new, valid value. Hosts subscribe to write the value back into the model (and onward to source).

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView, string> InlineReferenceCommitted

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:700

Raised when this pin’s inline reference is edited and committed with a new identifier. Hosts subscribe to write the reference back into the model (and onward to source).

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> ObjectReferenceClearRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:717

Feature 072 : raised by the combo’s trailing clear action.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> ObjectReferenceClicked

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:707

Round Trip feature 072 : raised when this pin’s object-reference combo is clicked and the click means something. A suppressed (wired) combo never raises it, so the consumer needs no rule of its own for the no-op.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView, System.Collections.Generic.IReadOnlyList<UnityEngine.Object>> ObjectReferenceDropped

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:723

Feature 072 : raised when assets dropped on this pin’s combo passed the host’s accept filter. The consumer performs the assignment.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> ObjectReferenceLocateRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:714

Round Trip feature 072 : raised by the combo’s trailing locate action, and by a modifier-click on the pin LABEL, which goes straight to locate instead of opening the picker. The consumer reveals the asset in its project browser.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> RecombineRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1178

Feature 038 - structured-pin split UX. Raised when the user invokes “Recombine Struct Pin” via right-click on a peer port.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> ShowInstanceAsPillRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1192

Feature 060, instance-display toggle. Raised when the user invokes “Show as Pill” on an eligible instance-consumer wire, asking the host to collapse this one connection back to an inline pill.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> ShowInstanceAsWireRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1185

Feature 060, instance-display toggle. Raised when the user invokes “Show as Wire” on an eligible instance-consumer pill, asking the host to reveal the shared instance source as a wire for this one connection.

C#
public event System.Action<BitQuirky.Graph.GraphView.Views.PortView> SplitRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1172

Feature 038 - structured-pin split UX. Raised when the user invokes “Split Struct Pin” via right-click on a splittable port. The host (GraphViewHost) flips the underlying struct pin’s expand state through the shared engine DLL.

C#
public const string BreakNodeLinksLabel = "Break Node Link(s)"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1235

Centralized menu label: remove every wire at this pin.

C#
public const float DormantPinOpacity = 0.4

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:891

Row opacity for dormant (discard) pins.

C#
public const string DragCompatibleClassName = "port-drag-compatible"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:877

USS class marking a port as a compatible drop target during a connection drag.

C#
public const float DragCompatibleOutlineWidth = 2

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:904

Ring width for the compatible-target highlight drawn around the pin visual in the port’s resolved type color.

C#
public const string DragIncompatibleClassName = "port-drag-incompatible"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:880

USS class marking a port as an incompatible drop target during a connection drag.

C#
public const float DragIncompatibleOpacity = 0.4

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:898

Row opacity applied to incompatible drop targets during a connection drag. Sits with the dormant-pin values above so all subdued-pin opacities tune together.

C#
public const float HollowGlyphStrokeWidth = 2

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:907

Outline width applied to a hollow data or delegate glyph.

C#
public const int MaxPinLabelChars = 12

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:850

Single source of truth for the maximum visible character count of any pin label across the graph. Labels longer than this are shortened to “…” so a single long identifier cannot widen a port row past the card’s allocated column width (which made the input column overlap the output column on multi-declarator cards). The full text lives in the pin’s tooltip - see TruncateLabelForPin.

Tuned to the card’s available body width: now that the default-value badge floats OUTSIDE the chrome instead of eating row space, both pin columns can afford longer truncated labels without the input column colliding with the output column. Must stay in sync with the same constant in RoundTrip.Engine’s MSAGLGraphLayoutService so the engine’s width estimate matches what the renderer actually paints.

C#
public const float PassThroughPinOpacity = 0.55

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:886

Row opacity for pass-through (unwritten struct sibling) pins. Matches the desktop affordance.

C#
public const string ShowAsPillLabel = "Show as Pill"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1278

Centralized menu label: collapse a wired instance connection back to an inline pill.

C#
public const string ShowAsWireLabel = "Show as Wire"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1275

Centralized menu label: collapse a wired instance connection’s pill into a wire.

C#
public const float SplitChildIndentPx = 12

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:831

How far a child row of a split port is indented from its parent, in pixels.

PortView(PortDefinition port, bool isInput, Color? labelColor, bool showLabel, bool literalEditable, GraphPortGlyphStyle glyphStyle, bool literalEntryInvited)

Section titled “PortView(PortDefinition port, bool isInput, Color? labelColor, bool showLabel, bool literalEditable, GraphPortGlyphStyle glyphStyle, bool literalEntryInvited)”
C#
public PortView(BitQuirky.Graph.PortDefinition port, bool isInput, UnityEngine.Color? labelColor = null, bool showLabel = true, bool literalEditable = false, BitQuirky.Graph.GraphView.GraphPortGlyphStyle glyphStyle = Filled, bool literalEntryInvited = false)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:70-523

Creates the interactive row for a graph port using the requested glyph treatment. Existing callers that omitglyphStyleretain the filled glyph.

Parameters

  • literalEntryInvited: True when this port may draw an EMPTY entry box at rest. The host passes the answer from its ownGraphViewOptions.PortClickPredicate, because only a port that predicate accepts can have its editor opened by a click, and a box that cannot be opened is a dead affordance. Defaults to false, so a host that does not opt into literal entry renders as it always has.

AlignHeaderPortVisualToTextBaseline(float visualTopOffset)

Section titled “AlignHeaderPortVisualToTextBaseline(float visualTopOffset)”
C#
public void AlignHeaderPortVisualToTextBaseline(float visualTopOffset)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1155-1164

Nudges the pin glyph down byvisualTopOffsetpixels so it sits on the baseline of the header text beside it, and removes the row’s bottom margin.

C#
public static string BreakLinkToLabel(string counterpart)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1238

Builds the “Break link to ” per-wire menu label.

C#
public void ClearDragState()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1030-1035

Clears any connection-drag state, restoring the row opacity and pin visual outline that were in effect before the drag started.

ExternalBadgeLeft(bool isInput, float anchorX, float width)

Section titled “ExternalBadgeLeft(bool isInput, float anchorX, float width)”
C#
public static float ExternalBadgeLeft(bool isInput, float anchorX, float width)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1759-1760

The x an external-badge container’s LEFT edge takes for a given measured width, so that an INPUT container keeps its RIGHT edge pinned toanchorXhowever wide it becomes, and an OUTPUT container keeps its LEFT edge there.

Deliberately arithmetic rather than a percentage translate. translate: -100% expresses the same intent, but UI Toolkit resolves the percentage against the width the element had when it was first laid out and never re-resolves it: a container that grew afterwards, which is exactly what happens when a literal editor opens on the pin, kept its original left edge and ran rightward INTO the node card instead of leftward into the gutter.

C#
public System.Collections.Generic.IReadOnlyList<string> GetContextMenuActionLabels()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1426-1435

The ordered labels this pin’s right-click menu would show right now. Observation surface for hosts and tests: verifies the break-menu rules (“Break Node Link(s)” appears only when wired; per-counterpart entries only when more than one wire) without simulating a UI event.

C#
public UnityEngine.Vector2 GetWorldPositionForEdge()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1441-1445

The point an edge attaches to, in panel space: the center of the pin glyph, or the origin when the row has no glyph.

C#
public static bool IsLocateModifier(UnityEngine.UIElements.IMouseEvent evt)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:783

The modifier that turns a click on an object pin’s LABEL into a locate instead of a picker open . Alt is Unity’s own “reveal / inspect rather than act” modifier, and it is free on a pin label, where a plain click already means something else.

C#
public BitQuirky.Graph.GraphView.Views.CompositeLiteralElement OpenCompositeEditor(int componentIndex = 0)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1625-1634

Raises the editor on one component of this pin’s composite row, which is how a row opens from a port click rather than a click on a box (feature round-trip 071).

Returns the row, or null when this port carries none or is not editable. Defaults to the leftmost component, which is where an engineer starts typing a value.

C#
public BitQuirky.Graph.GraphView.Views.InlineLiteralElement OpenLiteralEditor()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1591-1615

Raises the in-place literal editor on this pin, creating the pill element first when the pin carries no value yet (feature round-trip 070, ).

This is how an editor opens on an UNSET pin: keeps the pill undrawn there, so there is nothing to click and the host opens the editor from the port click instead. An editor dismissed without committing drops the element again, so an unset pin never keeps an invisible badge attached.

Returns the editor element, or null when this port is not literal-editable.

C#
public void RefreshExternalBadgeLayer()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1851-1885

Reparents and repositions the external badge container. The host calls this after edge-layer ordering so pin badges and inline literals remain above wires even when edges are configured to draw on top of node cards.

ResolveValueGlyphStyle(PortDefinition port)

Section titled “ResolveValueGlyphStyle(PortDefinition port)”
C#
public static BitQuirky.Graph.GraphView.GraphPortGlyphStyle ResolveValueGlyphStyle(BitQuirky.Graph.PortDefinition port)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:928-946

The shared “this pin has no value yet” glyph rule: an input pin that is eligible for a value, carries none, and is not wired draws the HOLLOW glyph; every other pin draws filled.

Three consumer features feed it. A literal-eligible pin with no inline literal is empty (Round Trip feature 070); a COMPOSITE pin is empty when every one of its components is blank (feature 071), since a composite value lives in CompositeComponentValuesand never sets HasInlineLiteral; an object pin whose combo holds no reference is empty in exactly the same sense (feature 072, ). All three take the same visual because they mean the same thing to the engineer, and the rule lives here, beside the glyph it drives, so a host does not grow a second copy of it.

A wired pin is never hollow whatever else is true: the wire is the value. A pin the consumer marked neither literal-eligible nor object-accepting is outside the rule entirely and stays filled, which is what keeps every other host rendering exactly as it always has.

C#
public void SetDragCompatible(UnityEngine.Color tint)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:998-1008

Marks this port as a compatible drop target for the active connection drag: highlight ring in the port’s resolved type color (tint); full row opacity is left untouched so compatible ports stand out against the dimmed incompatible ones.

C#
public void SetDragIncompatible()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1014-1024

Dims this port as an incompatible drop target for the active connection drag.

C#
public void SetLabelColor(UnityEngine.Color color)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1450-1453

Updates the label color for contrast against a background.

SetLinkTargets(IReadOnlyList<PortView.PortLinkTarget> targets)

Section titled “SetLinkTargets(IReadOnlyList<PortView.PortLinkTarget> targets)”
C#
public void SetLinkTargets(System.Collections.Generic.IReadOnlyList<BitQuirky.Graph.GraphView.Views.PortView.PortLinkTarget> targets)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1265-1272

Supplies (or clears) the wires terminating at this pin and ensures the right-click context menu is installed so the break entries can appear. The host calls this after building the port, once it knows the pin’s connectivity from the graph model.

C#
public void SetPortVisualColor(UnityEngine.Color color)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1085-1113

Recolors the pin glyph, filling it or stroking its outline depending on the glyph style in force. Does nothing when the row has no glyph.

SetPortVisualOutline(Color color, float width)

Section titled “SetPortVisualOutline(Color color, float width)”
C#
public void SetPortVisualOutline(UnityEngine.Color color, float width)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:1134-1149

Draws a ring of the given width around the pin glyph, so a pin reads as an outlined dot. Does nothing for a triangular flow glyph, which has no ring.

C#
public static string TruncateLabelForPin(string label)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/PortView.cs:859-866

Returns the pin label as displayed on the card: the input text unchanged when it fits withinMaxPinLabelChars, otherwise the first (MaxPinLabelChars - 1) characters followed by an ellipsis. Null and empty strings round-trip unchanged so callers can passport.Labeldirectly.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.RailSectionHeaderShadow

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/RailSectionHeaderShadow.cs:40-107

Inherits: VisualElement

Soft drop shadow strip painted immediately below a rail section heading, so the heading reads as a layer floating above the scrolling body content. Sized and positioned by the .ed-rail-section__header-shadow USS rule; the alpha ramp from token opacity (top) to transparent (bottom) is composed here in C# from a stack of thin horizontal strips with stepped alpha, because UI Toolkit’s linear-gradient fill is unavailable on Unity 2022 and USS gradients are unreliable in general.

The strip base color and peak opacity are read from --bq-rail-section-shadow-color via CustomStyleProperty; the per-strip alpha is derived from that configured alpha and ramp curve.

C#
public RailSectionHeaderShadow()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/RailSectionHeaderShadow.cs:62-68

Builds the strip with the fallback shadow color, which the real token replaces as soon as style resolves. It takes no pointer input and repaints on geometry and token changes.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.RecombineHintLayer

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/RecombineHintLayer.cs:19-155

Inherits: VisualElement

Feature 038 / Phase 10 / US8 - Unity-side recombine hint overlay. Mirrors the desktopRecombineHintOverlay: when the shared RecombineHintEvaluatoremits a hint, this layer draws a dashed rectangle around the union bounding box of the participating child wires. Purely visual (FR-010a) - never intercepts input, never mutates graph data. Sits belowEdgeLayerin the visual stack so wires remain interactive.

C#
public int HintCount { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/RecombineHintLayer.cs:69

Number of currently-rendered hint rectangles - exposed for editor smoke / unit tests of the parity layer.

C#
public RecombineHintLayer()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/RecombineHintLayer.cs:33-42

Builds an empty hint layer stretched to fill its parent and taking no pointer input, so the wires it outlines stay interactive. Add it below the wire layer in the visual stack.

C#
public void AddHint(UnityEngine.Rect wireBoundsUnion)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/RecombineHintLayer.cs:49-53

Add a hint rectangle in graph-space coordinates. The renderer inflates byPaddingwhen drawing so the dashed outline reads as enclosing rather than touching the wires.

C#
public void ClearHints()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/RecombineHintLayer.cs:58-63

Removes every hint rectangle and repaints. Clearing an empty layer does nothing.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.TypeLegendView

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/TypeLegendView.cs:58-178

Inherits: VisualElement

Generic on-canvas legend ( in the Round Trip 043 spec). Lists one row per first-class data type plus the execution-flow row, each row composed of a small color swatch and the type’s canonical short name. Rows are seeded from FirstClassDataTypesso adding a new first-class type is a one-line edit in NodeColorRules and the legend picks it up automatically - the legend is NOT the source of truth, it just renders the one defined by the color rules.

Responsibilities:

  • Compose a vertical stack ofswatch | labelrows for the data types + the exec sentinel.
  • Resolve each swatch’s fill via GetDataTypeColor(data rows) and ExecutionFlowColor(exec row), so the legend, the pin glyphs, and the wire strokes always agree.
  • Stay anchored to the canvas viewport: embedders parent the legend to the graph container (NOT the pan/zoom content) and position it with absolute insets.

Does NOT:

  • Own its position. Embedders pick the corner / inset via style.position = Position.Absoluteand the matching left/right/top/bottom style values.
  • React to pointer events.PickingModeis Ignoreso clicks pass through to the canvas behind it.
  • Show / hide itself. Embedders ownstyle.displayso each consumer (Round Trip, God Complex) can choose visibility per product.

C#
public TypeLegendView()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/TypeLegendView.cs:78-92

Builds the legend already populated: the flow sentinel first, then one row per first-class data type, laid out in a single row. It takes no pointer input, and the embedder owns its position and visibility.

C#
public void Refresh()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/TypeLegendView.cs:101-107

Re-resolves swatch colors against the current NodeColorRulesstate. Call when the host swaps the active theme or the user changes a type-color preference; safe to call at any time (it walks the existing row list, no allocation in the common case).

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.UnsupportedIndicator

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/UnsupportedIndicator.cs:12-37

Inherits: VisualElement

Visual element displaying an orange indicator dot for unsupported constructs.

C#
public UnsupportedIndicator(string tooltipText = "This method contains C# constructs that cannot be fully visualized.")

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/UnsupportedIndicator.cs:23-36

Builds the dot at its fixed size and color, with tooltipTextas the hover explanation. The default wording states that the method holds constructs the canvas cannot fully draw; pass your own for a narrower reason.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.VerticalRampView

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/VerticalRampView.cs:28-181

Inherits: VisualElement

Vertical gradient painter used by the portrait-badge card chrome (card face ramp and family badge chip ramp).

Responsibilities:

  • Fill its content rect with one continuous vertical gradient. The two stops ride the standardcolor (top) and background-color(bottom) style channels so every per-family value stays a USS token lookup; inlineSetColorswins over both.
  • When theed-vertical-ramp--three-stopclass is present, read a third stop atMidStopfrom the -unity-background-image-tint-colorchannel and paint a continuous three-stop ramp. The card face and family badge both declare their mid color at 45% of the height, so a linear two-stop ramp would read too dark across the upper half of every card.
  • Fill the parent’s rounded silhouette without relying on overflow clipping.

Does NOT:

  • Own the parent container’s border or layout.

C#
public const float MidStop = 0.45

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/VerticalRampView.cs:34

Where the three-stop ramp’s middle color sits, as a fraction of the height.

C#
public const string ThreeStopClass = "ed-vertical-ramp--three-stop"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/VerticalRampView.cs:31

Class that opts the painter into the three-stop path.

C#
public VerticalRampView()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/VerticalRampView.cs:49-61

Builds the painter stretched to fill its parent and taking no pointer input. Its stops come from the resolved style untilSetColorsoverrides them, and it repaints on attach, style, and geometry changes so it follows a resizing card and picks up its parent’s corner radii.

C#
public void SetColors(UnityEngine.Color top, UnityEngine.Color bottom)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/VerticalRampView.cs:64-69

Override both stops inline (style channels are ignored).

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.ZoomHud

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomHud.cs:44-116

Inherits: VisualElement

Bottom-left zoom HUD that shows the current zoom percentage as a click-to-expand affordance . Clicking the HUD raisesOnZoomMenuRequestedso the editor shell can open a slider or preset menu viaPopover.

Responsibilities:

  • Display the current zoom percentage rounded to whole numbers.
  • Surface a click event the editor wires to a popover.

Does NOT:

  • Own the zoom value itself; the editor shell drives the value from its viewport state.
  • Implement the slider or preset menu; those compose this HUD with aPopoverat a higher layer.

Remarks

Round Trip: replace any local zoom HUD with this control.

C#
public float Zoom { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomHud.cs:67-75

Current zoom value (1.0 = 100%). Setter updates the label.

C#
public event System.Action OnZoomMenuRequested

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomHud.cs:60

Raised when the reader activates the zoom readout, asking for the zoom menu. The HUD draws no menu itself; the host opens one.

C#
public ZoomHud()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomHud.cs:85-102

Builds the readout showing 100%, focusable and already wired so a left click raises OnZoomMenuRequested. Set Zoomto show the real value.

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Views.ZoomMenuPopover

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:61-255

Shared open-state zoom menu that opens above the bottom-left ZoomHudwhen the chip is clicked (, FR-035a, FR-035b). Composes the canonicalPopover infrastructure with a slider, 50% / 100% / 150% / 200% preset buttons, a Fit action, and a Reset-to-100% action.

Responsibilities:

  • Build the popover content (header, slider, preset row, action row) using existing shared classes and tokens; no new USS is introduced.
  • Drive the suppliedGraphViewHostthrough its public zoom API (SetZoom, FitToContents) so clamping and viewport bookkeeping stay owned by the host.
  • ExposeOnClosed + IsOpenso the editor shell can avoid stacking duplicate popovers and can tear the popover down on window disable.

Does NOT:

  • Own zoom clamping or snap behavior; the host does that (preserves God Complex behavior per FR-035b).
  • Carry keyboard shortcuts (F, Cmd+0). The tooltips reference those shortcuts so users see the same hints as God Complex, but the actual key handling stays in each product’s editor window.
  • Migrate God Complex’s existing inline zoom popover; that lands as a follow-up upstream cleanup under / FR-035a.

Remarks

Round Trip: instantiate one of these per editor window, pass the GraphViewHost, and call Openfrom the OnZoomMenuRequestedhandler. Re-opening while already open replaces the existing popover.

C#
public bool IsOpen { get; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:113

True while a popover is currently displayed.

C#
public System.Action OnFitRequested { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:110

Optional override for the Fit action. When set, the popover invokes this delegate instead ofFitToContents. Consumers that need a different alignment (God Complex uses TopCenter) or want to post a status-bar message can set this without subclassing.

C#
public event System.Action OnClosed

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:97

Raised after the popover has finished closing.

C#
public const float DefaultAnchorGap = 4

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:72

Default anchor gap between the chip and the popover (mirrors God Complex).

C#
public const string FitTooltip = "Fit graph to view — F"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:66

Tooltip string for the Fit action. Mirrors God Complex.

C#
public const string ResetTooltip = "Reset zoom — Cmd+0"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:69

Tooltip string for the Reset-to-100% action. Mirrors God Complex.

C#
public const string SectionHeaderUssClass = "ed-text-section-header"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:83

USS class on a section heading inside the popover.

C#
public const string SliderUssClass = "ed-zoom-menu__slider"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:81

USS class on the zoom slider.

C#
public const string TitleUssClass = "ed-zoom-menu__title"

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:79

USS class on the popover’s title.

C#
public ZoomMenuPopover(BitQuirky.Graph.GraphView.GraphViewHost host)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:125-129

Binds the menu tohost, whose viewport its entries act on. Nothing is shown untilOpenis called. Throws ArgumentNullException when hostis null, since every entry needs a viewport to change.

C#
public void Close()

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:206-212

Close the popover if it is currently open. Safe to call at any time (no-op if already closed).

Open(VisualElement panelRoot, VisualElement anchor, float gap)

Section titled “Open(VisualElement panelRoot, VisualElement anchor, float gap)”
C#
public void Open(UnityEngine.UIElements.VisualElement panelRoot, UnityEngine.UIElements.VisualElement anchor, float gap = 4)

Source declaration: ../bitquirky-graph/Editor/GraphView/Views/ZoomMenuPopover.cs:144-200

Open the popover anchored immediately aboveanchor insidepanelRoot’s local coordinate space. If the popover is already open it is closed first so the new popover reflects the latest zoom value.

Parameters

  • panelRoot: Panel root the popover attaches to. Round Trip passes its graph-container element; God Complex passes its canvas-area element.
  • anchor: The ZoomHud (or any other element) the popover should sit above.
  • gap: Vertical gap in pixels between the popover’s bottom edge and the anchor’s top edge. Defaults to DefaultAnchorGap.

Source fingerprint: sha256:ad0983d00d773d882bc61865e18d8c5559e009d181e5891575cd7f262515b23e

Full-size image