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);
        }