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

BitQuirky.Graph.GraphView.Manipulators

Public bit quirky graph: editor symbols in BitQuirky.Graph.GraphView.Manipulators.

Source snapshot ad0983d00d77.

Assembly: BitQuirky.Graph.GraphView.Editor

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Manipulators.EdgeConnectorManipulator

Source 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.

EdgeConnectorManipulator(GraphViewHost host)

Section titled “EdgeConnectorManipulator(GraphViewHost host)”
C#
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.

C#
protected override void RegisterCallbacksOnTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeConnectorManipulator.cs:61-66

C#
protected override void UnregisterCallbacksFromTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeConnectorManipulator.cs:69-75

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Manipulators.EdgeEndpointManipulator

Source 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.

EdgeEndpointManipulator(GraphViewHost host)

Section titled “EdgeEndpointManipulator(GraphViewHost host)”
C#
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.

C#
protected override void RegisterCallbacksOnTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeEndpointManipulator.cs:42-47

C#
protected override void UnregisterCallbacksFromTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/EdgeEndpointManipulator.cs:50-56

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Manipulators.GraphNodeDragger

Source 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.

GraphNodeDragger(GraphViewHost host, float dragThreshold)

Section titled “GraphNodeDragger(GraphViewHost host, float dragThreshold)”
C#
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.

C#
protected override void RegisterCallbacksOnTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphNodeDragger.cs:90-97

C#
protected override void UnregisterCallbacksFromTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphNodeDragger.cs:100-114

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Manipulators.GraphPanManipulator

Source 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.

C#
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)”
C#
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.

C#
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.

C#
protected override void RegisterCallbacksOnTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:68-74

C#
protected override void UnregisterCallbacksFromTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphPanManipulator.cs:77-83

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Manipulators.GraphSelectionManipulator

Source 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.

GraphSelectionManipulator(GraphViewHost host, bool enableMarquee, float dragThreshold)

Section titled “GraphSelectionManipulator(GraphViewHost host, bool enableMarquee, float dragThreshold)”
C#
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.

C#
protected override void RegisterCallbacksOnTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphSelectionManipulator.cs:47-52

C#
protected override void UnregisterCallbacksFromTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphSelectionManipulator.cs:55-60

Category: Low-level runtime

C#
class BitQuirky.Graph.GraphView.Manipulators.GraphZoomManipulator

Source 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.

C#
public bool InvertZoomDirection { get; set; }

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:31

Whether scrolling up zooms out instead of in.

C#
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.

C#
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.

C#
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.

C#
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.

C#
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.

C#
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)”
C#
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)”
C#
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)”
C#
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.

C#
protected override void RegisterCallbacksOnTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:88-91

C#
protected override void UnregisterCallbacksFromTarget()

Source declaration: ../bitquirky-graph/Editor/GraphView/Manipulators/GraphZoomManipulator.cs:94-97

Source fingerprint: sha256:ad0983d00d773d882bc61865e18d8c5559e009d181e5891575cd7f262515b23e

Full-size image