private void DrawConnectionForNodes(VisualizationNodeBase node, VisualizationConnection childConnection, RelationType relationType, bool isRecursion, int connectionCount)
        {
            VisualizationNodeBase childNode = childConnection.VNode;
            VisualizationNodeBase current   = relationType == RelationType.DEPENDENCY ? node : childNode;
            VisualizationNodeBase target    = relationType == RelationType.DEPENDENCY ? childNode : node;

            Vector2 currentPos = current.GetPosition(_viewAreaData);
            Vector2 targetPos  = target.GetPosition(_viewAreaData);

            float distanceBlend = 1;

            if (connectionCount > 20)
            {
                distanceBlend = Mathf.Pow(1 - Mathf.Clamp01(Mathf.Abs(currentPos.y - targetPos.y) / 20000.0f), 3);
            }

            float alphaAmount = (isRecursion ? 0.15f : 1.0f) * distanceBlend;

            DrawRecursionButton(isRecursion, node, childNode, relationType);

            if (childConnection.IsIndicator)
            {
                return;
            }

            if (alphaAmount > 0.01)
            {
                DrawConnection(currentPos.x + current.Bounds.Width, currentPos.y, targetPos.x, targetPos.y, GetConnectionColorForType(childConnection.Datas[0].Type), alphaAmount);
            }
        }
        /// <summary>
        /// Scrolls the view to a position where the main asset is centered
        /// </summary>
        private void JumpToNode(VisualizationNodeBase node)
        {
            Vector2 nodePos = node.GetPosition(_viewAreaData);

            _viewAreaData.ScrollPosition.x = -_viewAreaData.Bounds.MinX - _viewAreaData.ViewArea.width / 2 + nodePos.x + node.Bounds.Width;
            _viewAreaData.ScrollPosition.y = -_viewAreaData.Bounds.MinY - _viewAreaData.ViewArea.height / 2 + nodePos.y + node.Bounds.Height;
        }
        private void DrawRecursionButton(bool isRecursion, VisualizationNodeBase node, VisualizationNodeBase childNode, RelationType relationType)
        {
            int     offset   = relationType == RelationType.REFERENCER ? childNode.Bounds.Width :  -16;
            Vector2 position = childNode.GetPosition(_viewAreaData);

            if (isRecursion && GUI.Button(new Rect(position.x + offset, position.y, 16, 16), ">"))
            {
                JumpToNode(node);
            }
        }