public override void OnPointerDrag(PointerEvent evt)
        {
            NodeHandle handle   = (NodeHandle)evt.downObject;
            Vector2    mousePos = evt.mousePos;

            if (_draggingHandle == null)
            {
                if (handle.type == NodeHandle.HandleType.Out)
                {
                    _nodeCanvas.CreatePreviewConnection(handle, evt.mousePos);
                    _draggingHandle = handle;
                }
                else
                {
                    NodePanel parent = handle.NodePanel.Parent;
                    if (parent != null)
                    {
                        _draggingHandle = parent.outHandle;
                        _nodeCanvas.RemoveChild(handle.NodePanel);
                        _nodeCanvas.CreatePreviewConnection(parent.outHandle, evt.mousePos);
                    }
                }
            }

            if (_draggingHandle != null && _nodeCanvas.previewConnection != null)
            {
                _nodeCanvas.previewConnection.SetEndPosition(CanvasUtility.ScreenToCanvasPosition(mousePos, _nodeCanvas.canvasState));
                _nodeCanvas.previewConnection.UpdatePoints(new List <NodeConnection>());
            }
        }