BitQuirky.Graph.GraphView.Manipulators
Public bit quirky graph: editor symbols in BitQuirky.Graph.GraphView.Manipulators.
Source snapshot ad0983d00d77.
On this page
Assembly: BitQuirky.Graph.GraphView.Editor
EdgeConnectorManipulator
Section titled “EdgeConnectorManipulator”Category: Low-level runtime
class BitQuirky.Graph.GraphView.Manipulators.EdgeConnectorManipulatorSource declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeConnectorManipulator.cs:17-242
Inherits: MouseManipulator
Turns a left drag from a port into a connection: it starts the drag on the canvas, follows the pointer, and completes on the port under the release, or cancels on Escape. On a port the host marked click-eligible the press waits for the drag threshold first, so a plain click on that pin reaches the host as a click rather than a connection. A press with the rewire modifier on a wired pin moves the existing wire’s endpoint instead of creating a second wire.
Members
Section titled “Members”EdgeConnectorManipulator(GraphViewHost host)
Section titled “EdgeConnectorManipulator(GraphViewHost host)”public EdgeConnectorManipulator(BitQuirky.Graph.GraphView.GraphViewHost host)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeConnectorManipulator.cs:54-58
Binds the manipulator tohost, which it asks for hit-testing, the
temporary wire, and the host-facing notifications, and arms it on the left mouse button
only. Attach it to the port element whose drags it should handle.
RegisterCallbacksOnTarget()
Section titled “RegisterCallbacksOnTarget()”protected override void RegisterCallbacksOnTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeConnectorManipulator.cs:61-66
UnregisterCallbacksFromTarget()
Section titled “UnregisterCallbacksFromTarget()”protected override void UnregisterCallbacksFromTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeConnectorManipulator.cs:69-75
EdgeEndpointManipulator
Section titled “EdgeEndpointManipulator”Category: Low-level runtime
class BitQuirky.Graph.GraphView.Manipulators.EdgeEndpointManipulatorSource declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeEndpointManipulator.cs:19-127
Inherits: MouseManipulator
Feature 062 (E2): a left-drag begun on empty canvas near an existing data wire grabs that wire’s endpoint and, on release, raisesOnEdgeEndpointDetached so a host can pull the wire off its shared source (the split gesture). It only activates on background clicks (clicks on a node, port, or the node dragger are left to those handlers) and only when an edge is actually under the cursor, so it does not steal marquee selection on truly empty canvas. Registered before the selection manipulator and stops immediate propagation on a grab so selection does not also start. Renderer-agnostic: it drives the host’s hit-testing/temp-edge helpers and reports the gesture; the host decides what it means.
Members
Section titled “Members”EdgeEndpointManipulator(GraphViewHost host)
Section titled “EdgeEndpointManipulator(GraphViewHost host)”public EdgeEndpointManipulator(BitQuirky.Graph.GraphView.GraphViewHost host)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeEndpointManipulator.cs:35-39
Binds the manipulator tohost, which it asks for edge hit-testing and
the temporary wire, and arms it on the left mouse button only. Attach it to the canvas
background, and register it ahead of the selection manipulator so a grab wins over
starting a marquee.
RegisterCallbacksOnTarget()
Section titled “RegisterCallbacksOnTarget()”protected override void RegisterCallbacksOnTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeEndpointManipulator.cs:42-47
UnregisterCallbacksFromTarget()
Section titled “UnregisterCallbacksFromTarget()”protected override void UnregisterCallbacksFromTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeEndpointManipulator.cs:50-56
GraphNodeDragger
Section titled “GraphNodeDragger”Category: Low-level runtime
class BitQuirky.Graph.GraphView.Manipulators.GraphNodeDraggerSource declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphNodeDragger.cs:25-295
Inherits: MouseManipulator
Handles node pointer selection and optional dragging for a graph host.
Responsibilities:
- Prepare a draggable selection when selection controls are disabled.
- Start, update, and finish node movement only while host dragging is enabled.
- Auto-pan the viewport while a dragged card is held at or beyond a viewport edge, so a card can be carried to a destination that is currently off screen; the card stays under the pointer throughout.
Does NOT:
- Decide whether the editor is writable; it reads the host’s current interaction mode.
- Apply domain-specific drop eligibility; the embedding host owns that decision.
Members
Section titled “Members”GraphNodeDragger(GraphViewHost host, float dragThreshold)
Section titled “GraphNodeDragger(GraphViewHost host, float dragThreshold)”public GraphNodeDragger(BitQuirky.Graph.GraphView.GraphViewHost host, float dragThreshold)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphNodeDragger.cs:82-87
Binds the dragger tohost, which owns the selection it moves and
receives the resulting notifications, and arms it on the left mouse button only.
dragThresholdis the distance in pixels the pointer must travel
before a press counts as a drag, which is what keeps a click on a node from nudging it.
RegisterCallbacksOnTarget()
Section titled “RegisterCallbacksOnTarget()”protected override void RegisterCallbacksOnTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphNodeDragger.cs:90-97
UnregisterCallbacksFromTarget()
Section titled “UnregisterCallbacksFromTarget()”protected override void UnregisterCallbacksFromTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphNodeDragger.cs:100-114
GraphPanManipulator
Section titled “GraphPanManipulator”Category: Low-level runtime
class BitQuirky.Graph.GraphView.Manipulators.GraphPanManipulatorSource declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:15-177
Inherits: MouseManipulator
Pans the canvas with a middle-button or right-button drag. A right-button press that travels far enough to pan swallows its release, so panning never also opens the context menu; a press that stays put is left to the menu. The manipulator owns no viewport state: it reads the current pan and reports the requested one.
Members
Section titled “Members”IsLocked
Section titled “IsLocked”public bool IsLocked { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:41
When true, the manipulator ignores all pan input. Selection, node-click, and context-menu manipulators on the same target continue to fire. Used by the editor “Lock pan/zoom” toolbar button (Behavior Tree Editor ).
Remarks
Round Trip: a future migration that wants a “frozen viewport” affordance can flip this rather than building a parallel suppress-pan path.
GraphPanManipulator(Func<Vector2> getPan, Action<Vector2> onPanChanged)
Section titled “GraphPanManipulator(Func<Vector2> getPan, Action<Vector2> onPanChanged)”public GraphPanManipulator(System.Func<UnityEngine.Vector2> getPan, System.Action<UnityEngine.Vector2> onPanChanged)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:49-55
Wires the manipulator to the viewport it pans:getPanreads the
current offset in pixels andonPanChangedis handed the new one, so
the manipulator stores no viewport state of its own. Armed on the middle and right mouse
buttons; a right-button press that never travels far enough still opens the context menu.
ApplyPanDelta(Vector2 delta)
Section titled “ApplyPanDelta(Vector2 delta)”public void ApplyPanDelta(UnityEngine.Vector2 delta)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:61-65
Requests a pan ofdeltapixels from the current offset, for callers
driving the viewport from something other than a drag.
RegisterCallbacksOnTarget()
Section titled “RegisterCallbacksOnTarget()”protected override void RegisterCallbacksOnTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:68-74
UnregisterCallbacksFromTarget()
Section titled “UnregisterCallbacksFromTarget()”protected override void UnregisterCallbacksFromTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:77-83
GraphSelectionManipulator
Section titled “GraphSelectionManipulator”Category: Low-level runtime
class BitQuirky.Graph.GraphView.Manipulators.GraphSelectionManipulatorSource declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphSelectionManipulator.cs:22-172
Inherits: MouseManipulator
Handles node and canvas selection for a graph host.
Responsibilities:
- Apply normal and additive node selection from pointer presses.
- Clear selection or begin marquee selection from an empty-canvas press.
Does NOT:
- Move nodes or decide whether graph content is writable.
- Mutate the graph definition outside the host’s selection state.
Members
Section titled “Members”GraphSelectionManipulator(GraphViewHost host, bool enableMarquee, float dragThreshold)
Section titled “GraphSelectionManipulator(GraphViewHost host, bool enableMarquee, float dragThreshold)”public GraphSelectionManipulator(BitQuirky.Graph.GraphView.GraphViewHost host, bool enableMarquee, float dragThreshold)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphSelectionManipulator.cs:38-44
Binds the manipulator tohost, whose selection state it writes, and
arms it on the left mouse button only.enableMarqueedecides whether
a drag from empty canvas rubber-bands a rectangle or merely clears the selection, and
dragThresholdis the distance in pixels before a press becomes that
drag rather than a click.
RegisterCallbacksOnTarget()
Section titled “RegisterCallbacksOnTarget()”protected override void RegisterCallbacksOnTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphSelectionManipulator.cs:47-52
UnregisterCallbacksFromTarget()
Section titled “UnregisterCallbacksFromTarget()”protected override void UnregisterCallbacksFromTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphSelectionManipulator.cs:55-60
GraphZoomManipulator
Section titled “GraphZoomManipulator”Category: Low-level runtime
class BitQuirky.Graph.GraphView.Manipulators.GraphZoomManipulatorSource declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:14-126
Inherits: MouseManipulator
Turns wheel and trackpad scrolling over the canvas into zoom or pan. The manipulator owns no viewport state: it reads the current zoom and reports the requested one, so the host stays the single owner of the layout.
Members
Section titled “Members”InvertZoomDirection
Section titled “InvertZoomDirection”public bool InvertZoomDirection { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:31
Whether scrolling up zooms out instead of in.
IsLocked
Section titled “IsLocked”public bool IsLocked { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:43
When true, the manipulator suppresses zoom and scroll-pan updates. Used by the editor “Lock pan/zoom” toolbar button (Behavior Tree Editor ). Click-driven selection on the host remains live.
Remarks
Round Trip: paired withIsLocked so a single host-level toggle blocks both manipulators.
MaxZoom
Section titled “MaxZoom”public float MaxZoom { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:23
Closest the wheel may zoom in, as a scale factor.
MinZoom
Section titled “MinZoom”public float MinZoom { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:21
Furthest the wheel may zoom out, as a scale factor.
ScrollPanMultiplier
Section titled “ScrollPanMultiplier”public float ScrollPanMultiplier { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:27
Pixels panned per unit of scroll delta while scrolling pans.
ScrollWheelBehavior
Section titled “ScrollWheelBehavior”public BitQuirky.Graph.GraphView.GraphScrollWheelBehavior ScrollWheelBehavior { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:29
Whether an unmodified scroll zooms or pans; when it pans, holding Control zooms.
ZoomStep
Section titled “ZoomStep”public float ZoomStep { get; set; }Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:25
How much one wheel notch changes zoom.
GraphZoomManipulator(Func<float> getZoom, Action<float, Vector2> onZoomChanged)
Section titled “GraphZoomManipulator(Func<float> getZoom, Action<float, Vector2> onZoomChanged)”public GraphZoomManipulator(System.Func<float> getZoom, System.Action<float, UnityEngine.Vector2> onZoomChanged)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:51-55
Wires the manipulator to the viewport it zooms:getZoomreads the
current scale factor andonZoomChangedis handed the new scale and
the point to keep fixed, so the manipulator stores no viewport state of its own. Built
this way it cannot scroll-pan; use the three-argument form for that.
GraphZoomManipulator(Func<float> getZoom, Action<float, Vector2> onZoomChanged, Action<Vector2> onPanDelta)
Section titled “GraphZoomManipulator(Func<float> getZoom, Action<float, Vector2> onZoomChanged, Action<Vector2> onPanDelta)”public GraphZoomManipulator(System.Func<float> getZoom, System.Action<float, UnityEngine.Vector2> onZoomChanged, System.Action<UnityEngine.Vector2> onPanDelta)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:63-70
The same wiring plusonPanDelta, which receives a pixel offset when a
scroll pans instead of zooming. Required for
PanWithControlZoom: without it a panning scroll
has nowhere to report to and does nothing.
ApplyZoomDelta(float deltaZoom, Vector2 center)
Section titled “ApplyZoomDelta(float deltaZoom, Vector2 center)”public void ApplyZoomDelta(float deltaZoom, UnityEngine.Vector2 center)Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:77-85
Requests a zoom change ofdeltaZoom about center
(target-local pixels), clamped into range. Reports nothing when the clamp leaves the
zoom where it was, so a caller at the limit produces no viewport churn.
RegisterCallbacksOnTarget()
Section titled “RegisterCallbacksOnTarget()”protected override void RegisterCallbacksOnTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:88-91
UnregisterCallbacksFromTarget()
Section titled “UnregisterCallbacksFromTarget()”protected override void UnregisterCallbacksFromTarget()Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:94-97
Source fingerprint: sha256:ad0983d00d773d882bc61865e18d8c5559e009d181e5891575cd7f262515b23e