コード例 #1
0
 public void HandleRightClick(Rect appViewPosition, Event currentEvent, GenericMenu contextMenu)
 {
     if (currentEvent.type == EventType.MouseDown &&
         currentEvent.button == 1)
     {
         LastClickPosition = GraphWindowMediator.SnapDragPositionToGrid(currentEvent.mousePosition);
         currentEvent.Use();
         contextMenu.ShowAsContext();
     }
 }
コード例 #2
0
        /// <returns>Tuple - first parameter is whether we have dragged this "frame".
        /// Second parameter is whether we have completed dragging and should update position</returns>
        public Tuple <bool, bool> HandleDrag(Event currentEvent, out Vector2 newDragPosition)
        {
            var returnValue = new Tuple <bool, bool>(false, false);

            newDragPosition = GraphWindowMediator.SnapDragPositionToGrid(_initialDragPosition + _draggingOffset + _initialDragOffset);

            var currentMousePosition = currentEvent.mousePosition;

            if (_lastDrawRect.Contains(currentMousePosition) &&
                currentEvent.type == EventType.MouseDown &&
                currentEvent.button == 0)
            {
                _initialDragPosition = currentMousePosition;
                _initialDragOffset   = _lastDrawRect.position - currentMousePosition;
                _draggingOffset      = Vector2.zero;
                _isDragging          = true;
                currentEvent.Use();
            }

            if (_isDragging && currentEvent.button == 0)
            {
                switch (currentEvent.type)
                {
                case EventType.MouseDrag:
                    _draggingOffset += currentEvent.delta;
                    currentEvent.Use();
                    returnValue.First = true;
                    return(returnValue);

                case EventType.MouseUp:
                    _isDragging = false;
                    currentEvent.Use();

                    const float relativeSnapDragThreshold = 0.3f;
                    returnValue.Second    = _draggingOffset.magnitude > GraphWindowMediator.SnapCell.magnitude * relativeSnapDragThreshold;
                    GUIUtility.hotControl = 0;
                    return(returnValue);
                }
            }

            return(returnValue);
        }