Esempio n. 1
0
        public virtual void OnPrefixDragged(Event inputEvent)
        {
            var   values          = GetValues();
            var   mouseDownValues = MouseDownValues;
            float mouseDelta      = this.GetMouseDelta(inputEvent, MouseDownPosition);

                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(values.Length == mouseDownValues.Length);
            Debug.Assert(mouseDownValues.Length > 0);
                        #endif

            bool changed = false;
            for (int n = values.Length - 1; n >= 0; n--)
            {
                var valueWas       = (TValue)values[n];
                var mouseDownValue = (TValue)MouseDownValues[n];
                var setValue       = valueWas;
                OnPrefixDragged(ref setValue, mouseDownValue, mouseDelta);

                if (!setValue.Equals(valueWas))
                {
                    values[n] = setValue;
                    changed   = true;
                }
            }

            if (changed)
            {
                SetValues(values);
            }

            // highlight the control when prefix is being dragged
            // to make it clear that it is being dragged
            DrawGUI.DrawMouseoverEffect(ControlPosition, Inspector.Preferences.theme.CanDragPrefixToAdjustValueTint, localDrawAreaOffset);
        }
        /// <inheritdoc />
        public override void OnMouseover()
        {
                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(Clickable);
                        #endif

            if (MouseOverPart == PrefixedControlPart.Control)
            {
                if (!ReadOnly)
                {
                    DrawGUI.DrawMouseoverEffect(ControlPosition, localDrawAreaOffset);
                }
            }
            else if (MouseOverPart == PrefixedControlPart.Prefix)
            {
                if (InspectorUtility.Preferences.mouseoverEffects.prefixLabel)
                {
                    DrawGUI.DrawLeftClickAreaMouseoverEffect(PrefixLabelPosition, localDrawAreaOffset);
                }

                if (IsReorderable)
                {
                    DrawGUI.Active.SetCursor(MouseCursor.MoveArrow);
                }
            }
        }
        /// <inheritdoc />
        public void OnBeingReordered(float yOffset)
        {
            var rect = SelectionRect;

            rect.y += yOffset;
            DrawGUI.DrawMouseoverEffect(rect, localDrawAreaOffset);
        }
        /// <inheritdoc cref="IDrawer.OnMouseover" />
        public override void OnMouseover()
        {
            base.OnMouseover();

            if (draggableMemberVisible)
            {
                                #if DEV_MODE && PI_ASSERTATIONS
                Debug.Assert(!ReadOnly);
                                #endif

                DrawGUI.Active.SetCursor(MouseCursor.SlideArrow);

                var color = Inspector.Preferences.theme.CanDragPrefixToAdjustValueTint;

                // highlight the control even when mouseovering the prefix
                // to make it clear than dragging will change the value of that field
                var draggingTargets = DraggingTargetsMembers;
                for (int n = draggingTargets.Length - 1; n >= 0; n--)
                {
                    int index           = draggingTargets[n];
                    var draggableMember = (IDraggablePrefix <float>)members[index];
                    if (draggableMember.ShouldShowInInspector)
                    {
                        DrawGUI.DrawMouseoverEffect(draggableMember.ControlPosition, color, localDrawAreaOffset);
                    }
                }
            }
        }
Esempio n. 5
0
        /// <inheritdoc/>
        public override void OnMouseover()
        {
                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(Clickable);
                        #endif

            if (!ReadOnly)
            {
                DrawGUI.DrawMouseoverEffect(ClickToSelectArea, localDrawAreaOffset);
            }
        }
Esempio n. 6
0
        /// <inheritdoc cref="IDrawer.OnMouseover" />
        public override void OnMouseover()
        {
            var draggableMember = ValueDrawer as IDraggablePrefix;

            if (draggableMember != null && draggableMember.ShouldShowInInspector)
            {
                DrawGUI.Active.SetCursor(MouseCursor.SlideArrow);
                DrawGUI.DrawMouseoverEffect(draggableMember.ControlPosition, Inspector.Preferences.theme.CanDragPrefixToAdjustValueTint, localDrawAreaOffset);
                return;
            }
            base.OnMouseover();
        }
Esempio n. 7
0
        /// <inheritdoc />
        public override void OnMouseover()
        {
            if (!open)
            {
                if (SelectionRect.Contains(Event.current.mousePosition))
                {
                    DrawGUI.DrawMouseoverEffect(SelectionRect, localDrawAreaOffset);
                }

                DrawGUI.Active.AddCursorRect(SelectionRect, MouseCursor.Link);
            }
        }
Esempio n. 8
0
        /// <inheritdoc />
        public override void OnMouseover()
        {
            var objFieldRect = ColorRectPosition;

            if (objFieldRect.Contains(Cursor.LocalPosition))
            {
                DrawGUI.DrawMouseoverEffect(objFieldRect, localDrawAreaOffset);
            }
            else if (InspectorUtility.Preferences.mouseoverEffects.prefixLabel && MouseOverPart == PrefixedControlPart.Prefix)
            {
                DrawGUI.DrawLeftClickAreaMouseoverEffect(PrefixLabelPosition, localDrawAreaOffset);
            }
        }
Esempio n. 9
0
        /// <inheritdoc />
        public override void OnMouseover()
        {
            if (mouseIsOverButton)
            {
                // From version 2019.3 onwards Unity has built-in mouseover effects for enum fields
                                #if !UNITY_2019_3_OR_NEWER
                DrawGUI.DrawMouseoverEffect(buttonRect, localDrawAreaOffset);
                                #endif
                return;
            }

            base.OnMouseover();
        }
Esempio n. 10
0
        /// <inheritdoc />
        public sealed override void OnMouseover()
        {
            if (mouseoveredSubPart == SliderSubPart.Slider)
            {
                OnMouseoverSlider();
            }
            else if (mouseoveredSubPart == SliderSubPart.NumberField)
            {
                if (HasNumberField)
                {
                    DrawGUI.DrawMouseoverEffect(NumberFieldPosition, localDrawAreaOffset);
                }

                var valueString = StringUtils.ToString(Value);
                if (valueString.Length > 6)
                {
                    var tooltip     = GUIContentPool.Create(valueString);
                    var tooltipRect = labelLastDrawPosition;
                    tooltipRect.y      += 1f;
                    tooltipRect.height -= 2f;

                    var tooltipWidth = DrawGUI.prefixLabel.CalcSize(tooltip).x + 3f;
                    tooltipRect.x     = controlLastDrawPosition.x - tooltipWidth - DrawGUI.MiddlePadding - DrawGUI.MiddlePadding;
                    tooltipRect.width = tooltipWidth;

                    DrawGUI.Active.TooltipBox(tooltipRect, tooltip);
                    GUIContentPool.Dispose(ref tooltip);
                }
            }
            else if (MouseOverPart == PrefixedControlPart.Prefix)
            {
                if (InspectorUtility.Preferences.mouseoverEffects.prefixLabel)
                {
                    DrawGUI.DrawLeftClickAreaMouseoverEffect(PrefixLabelPosition, localDrawAreaOffset);
                }

                if (!ReadOnly)
                {
                    DrawGUI.Active.SetCursor(MouseCursor.SlideArrow);

                    if (HasNumberField)
                    {
                        //UPDATE: highlight the control even when mouseovering the prefix
                        //to make it clear than dragging will change the value of that field
                        DrawGUI.DrawMouseoverEffect(NumberFieldPosition, localDrawAreaOffset);
                    }
                }
            }
        }
Esempio n. 11
0
 /// <inheritdoc/>
 public override void OnMouseover()
 {
     if (mouseIsOverButton)
     {
         DrawGUI.DrawMouseoverEffect(buttonRect, localDrawAreaOffset);
         DrawGUI.Active.SetCursor(MouseCursor.Link);
     }
     else if (preferences.mouseoverEffects.prefixLabel)
     {
         var rect = labelLastDrawPosition;
         rect.y      += 1f;
         rect.height -= 2f;
         DrawGUI.DrawLeftClickAreaMouseoverEffect(rect, localDrawAreaOffset);
     }
 }
Esempio n. 12
0
        /// <inheritdoc cref="IDrawer.OnMouseover" />
        public override void OnMouseover()
        {
                        #if DEV_MODE && PI_ASSERTATIONS
            if (!Clickable || !ShouldShowInInspector)
            {
                Debug.LogError(StringUtils.ToColorizedString(
                                   ToString(), ".OnMouseover called with Clickable=", Clickable, ", ShowInInspector=", ShouldShowInInspector));
            }
                        #endif

            if (MouseOverPart == PrefixedControlPart.Prefix)
            {
                if (InspectorUtility.Preferences.mouseoverEffects.prefixLabel)
                {
                    DrawGUI.DrawLeftClickAreaMouseoverEffect(PrefixLabelPosition, localDrawAreaOffset);
                }

                if (IsReorderable)
                {
                    DrawGUI.Active.SetCursor(MouseCursor.MoveArrow);
                    return;
                }

                if (!ReadOnly)
                {
                    DrawGUI.Active.SetCursor(MouseCursor.SlideArrow);

                    // highlight the control when mouseovering the prefix
                    // to make it clear that dragging will change the value of that field
                    DrawGUI.DrawMouseoverEffect(ControlPosition, Inspector.Preferences.theme.CanDragPrefixToAdjustValueTint, localDrawAreaOffset);
                }
                return;
            }

            if (MouseOverPart == PrefixedControlPart.Control && !ReadOnly)
            {
                //UPDATE: Don't tint the text field on mouseover when it's being edited
                if (SelectedAndInspectorHasFocus && DrawGUI.EditingTextField)
                {
                    return;
                }
                DrawGUI.DrawMouseoverEffect(ControlPosition, localDrawAreaOffset);
            }
        }
Esempio n. 13
0
 /// <inheritdoc />
 public override void OnMouseover()
 {
     if (mouseIsOverGetButton)
     {
         DrawGUI.DrawMouseoverEffect(getButtonRect, localDrawAreaOffset);
         DrawGUI.Active.AddCursorRect(getButtonRect, MouseCursor.Link);
     }
     else if (mouseIsOverSetButton)
     {
         DrawGUI.DrawMouseoverEffect(setButtonRect, localDrawAreaOffset);
         DrawGUI.Active.AddCursorRect(setButtonRect, MouseCursor.Link);
     }
     else if (InspectorUtility.Preferences.mouseoverEffects.prefixLabel)
     {
         var rect = labelLastDrawPosition;
         rect.y      += 1f;
         rect.height -= 2f;
         DrawGUI.DrawLeftClickAreaMouseoverEffect(rect, localDrawAreaOffset);
     }
 }
        /// <inheritdoc cref="OnPrefixDragged(ref Vector3,Vector3,float)" />
        protected virtual void DoOnPrefixDragged(ref Vector3 inputValue, Vector3 inputMouseDownValue, float mouseDelta)
        {
            var draggingTargets = DraggingTargetsMembers;

            var color = Inspector.Preferences.theme.CanDragPrefixToAdjustValueTint;

            for (int n = draggingTargets.Length - 1; n >= 0; n--)
            {
                int index           = draggingTargets[n];
                var draggableMember = (IDraggablePrefix <float>)members[index];
                if (draggableMember.ShouldShowInInspector)
                {
                    DrawGUI.DrawMouseoverEffect(draggableMember.ControlPosition, color, localDrawAreaOffset);

                    float memberValue    = inputValue[index];
                    float mouseDownValue = inputMouseDownValue[index];
                    draggableMember.OnPrefixDragged(ref memberValue, mouseDownValue, mouseDelta);
                    inputValue[index] = memberValue;
                }
            }
        }
Esempio n. 15
0
        /// <inheritdoc/>
        protected override void DoOnPrefixDragged(ref Vector3 inputValue, Vector3 inputMouseDownValue, float mouseDelta)
        {
            if (Inspector.State.usingLocalSpace)
            {
                base.DoOnPrefixDragged(ref inputValue, inputMouseDownValue, mouseDelta);
                return;
            }

            var firstTransform = Transform;

            if (firstTransform.parent == null)
            {
                base.DoOnPrefixDragged(ref inputValue, inputMouseDownValue, mouseDelta);
                return;
            }

            var forward = firstTransform.forward;

            var draggingTargets = DraggingTargetsMembers;

            for (int n = draggingTargets.Length - 1; n >= 0; n--)
            {
                int index = draggingTargets[n];

                var draggableMember = (IDraggablePrefix <float>)members[index];
                if (draggableMember.ShouldShowInInspector)
                {
                    DrawGUI.DrawMouseoverEffect(draggableMember.ControlPosition, localDrawAreaOffset);

                    float memberValue    = inputValue[index];
                    float mouseDownValue = inputMouseDownValue[index];

                    float mouseDeltaComponent = forward[index] * mouseDelta;

                    draggableMember.OnPrefixDragged(ref memberValue, mouseDownValue, mouseDeltaComponent);
                    inputValue[index] = memberValue;
                }
            }
        }