Example #1
0
        private static void processDragAndDrop(ISupportDragAndDrop dragAndDropSupport,
                                               ref Rect r, SerializedProperty property)
        {
            Event curEvent = Event.current;
            Rect  dropArea = dragAndDropSupport.GetDropArea(r, property);

            switch (curEvent.type)
            {
            case EventType.Repaint:
            case EventType.DragUpdated:
            case EventType.DragPerform:
                if (!dropArea.Contains(curEvent.mousePosition, allowInverse: true))
                {
                    break;
                }

                bool isValidDrop = dragAndDropSupport.IsDropValid(
                    DragAndDrop.objectReferences, property);

                if (isValidDrop)
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Link;
                }
                else
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
                }

                if (curEvent.type == EventType.DragPerform && isValidDrop)
                {
                    DragAndDrop.AcceptDrag();

                    dragAndDropSupport.ProcessDroppedObjects(
                        DragAndDrop.objectReferences, property);
                }

                break;
            }
        }