public override void OnPointerDrag(PointerEvent evt) { if (evt.shift) { return; } if (topLevelPanels == null) { topLevelPanels = GetTopLevelPanels(_nodeCanvas.selectedPanels); } float factor = BehaviourEditor.SNAPPING_FACTOR; deltaPos += evt.deltaPos; float deltaX = Mathf.Abs(deltaPos.x) > factor ? deltaPos.x : 0; float deltaY = Mathf.Abs(deltaPos.y) > factor ? deltaPos.y : 0; for (int i = 0; i < topLevelPanels.Count; i++) { NodePanel draggingPanel = topLevelPanels[i]; draggingPanel.transform.position += new Vector2(deltaX, deltaY); draggingPanel.transform.position = CanvasUtility.SnapPosition(draggingPanel.transform.position, factor); if (draggingPanel.Parent != null) { draggingPanel.Parent.outHandle.UpdateConnections(); } draggingPanel.UpdateAllConnections(); } deltaPos = new Vector2(deltaX == 0 ? deltaPos.x : 0, deltaY == 0 ? deltaPos.y : 0); }