Esempio n. 1
0
        public void Resize(NodeResizeSide side, float delta)
        {
            var oldRatio = LabelWidth / NodeWidth;

            switch (side)
            {
            case NodeResizeSide.Left:
                if (NodeWidth - delta < MinNodeWidth)
                {
                    delta = NodeWidth - MinNodeWidth;
                }
                Move(new Vector2(delta, 0));
                delta = -delta;
                break;

            case NodeResizeSide.Right:
                if (NodeWidth + delta < MinNodeWidth)
                {
                    delta = MinNodeWidth - NodeWidth;
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(side), side, null);
            }
            NodeWidth += delta;
            LabelWidth = oldRatio * NodeWidth;
        }
Esempio n. 2
0
        private void OnLeftMouseDown()
        {
            var mouseGridPosition = GuiToGridPosition(Event.current.mousePosition);

            if (Nodes == null)
            {
                _isDragging = true;
                return;
            }

            foreach (var node in Nodes)
            {
                if (node.Content == null)
                {
                    continue;
                }

                if (node.Content.RightResizeZone.Contains(mouseGridPosition))
                {
                    _resizedNode = node.Content;
                    _resizedZone = NodeResizeSide.Right;
                    return;
                }

                if (node.Content.LeftResizeZone.Contains(mouseGridPosition))
                {
                    _resizedNode = node.Content;
                    _resizedZone = NodeResizeSide.Left;
                    return;
                }

                if (node.Content.HeaderRect.Contains(mouseGridPosition))
                {
                    _selectedNode = node.Content;
                    return;
                }

                if (node.Content.ContentRect.Contains(mouseGridPosition) ||
                    node.Content.SliderRect.Contains(mouseGridPosition))
                {
                    _selectedKnob = null;
                    return;
                }

                if (node.Content.Knobs.Any(k => k.Rect.Contains(mouseGridPosition)))
                {
                    return;
                }
            }

            _isDragging = true;
        }