public void OnPressedMouseDown(IInspector setInspector, IDrawer overControl)
        {
            if (overControl != null)
            {
                var e = Event.current;
                MouseDownPos = e.mousePosition;

                var overField = overControl as IFieldDrawer;
                if (overField != null && overField.CanReadFromFieldWithoutSideEffects)
                {
                    MouseDownOverDrawerValues = overControl.GetValues();
                }
                else
                {
                    MouseDownOverDrawerValues = ArrayPool <object> .ZeroSizeArray;
                }

                var setDraggingPrefixOfControl = overControl as IDraggablePrefix;
                if (setDraggingPrefixOfControl != null && setDraggingPrefixOfControl.DraggingPrefix)
                {
                    draggingPrefixOfDrawer = setDraggingPrefixOfControl;
                    draggingPrefixOfDrawer.OnPrefixDragStart(e);
                }
            }
        }
Exemple #2
0
        public static float GetMouseDelta([NotNull] this IDraggablePrefix subject, [NotNull] Event inputEvent, Vector2 mouseDownPosition)
        {
            var delta = inputEvent.mousePosition.x - mouseDownPosition.x;

            // In default Unity Inspector Control / Cmd is used to lower the drag sensitivity,
            // but in Power Inspector that is already used for snapping, so we use alt instead.
            if (inputEvent.alt)
            {
                return(delta * 0.25f);
            }
            if (inputEvent.shift)
            {
                return(delta * 4f);
            }
            return(delta);
        }
        /// <summary>
        /// Clears this object to its blank/initial state.
        /// This should be called each time the left mouse button is released.
        /// </summary>
        /// <param name="clearDragAndDropObjectReferences"> True to also clear DragAndDropObjectReferences. </param>
        public void Clear(bool clearDragAndDropObjectReferences)
        {
                        #if DEV_MODE && DEBUG_CLEAR
            if (mouseDownOverDrawer != null || Platform.Active.GUI.DragAndDropObjectReferences.Length > 0)
            {
                Debug.Log("MouseDownInfo.Clear called with clearDragAndDropObjectReferences=" + StringUtils.ToColorizedString(clearDragAndDropObjectReferences));
            }
                        #endif

                        #if DEV_MODE && DEBUG_SET_MOUSE_DOWN_OVER_CONTROL
            if (mouseDownOverDrawer != null)
            {
                Debug.Log("mouseDownOverDrawer = " + StringUtils.Null + "(via Clear)");
            }
                        #endif

            mouseDownOverDrawer    = null;
            draggingPrefixOfDrawer = null;
            inspector             = null;
            IsClick               = false;
            MouseButtonIsDown     = false;
            MouseDownEventWasUsed = true;
            mouseoveredInspectorLeftDuringDrag = false;
            reordering.Clear();
            PrefixResizeUtility.NowResizing = null;             // TO DO: use a delegate to reduce dependencies

            if (clearDragAndDropObjectReferences)
            {
                                #if DEV_MODE && PI_ASSERTATIONS
                if (Event.current != null && Event.current.rawType == EventType.DragExited)
                {
                    Debug.LogWarning("MouseDownInfo.Clear called with clearDragAndDropObjectReferences=" + StringUtils.True + " and EventType=" + StringUtils.Green("DragExited") + ". This could break drag n drop between EditorWindows.");
                }
                                #endif

                Platform.Active.GUI.DragAndDropObjectReferences = ArrayPool <Object> .ZeroSizeArray;
            }
                        #if DEV_MODE && PI_ASSERTATIONS
            else if (Event.current == null || Event.current.rawType != EventType.DragExited && Platform.Active.GUI.DragAndDropObjectReferences.Length > 0)
            {
                Debug.LogWarning("MouseDownInfo.Clear called with clearDragAndDropObjectReferences=" + StringUtils.False + " and Event=" + StringUtils.ToString(Event.current) + ". Should probably clear them?");
            }
                        #endif
        }