Пример #1
0
        void IPointerDownHandler.OnPointerDown(PointerEventData eventData)
        {
            // If the slider is close to zero users may not be able to see that it can be dragged, in that case, set
            // it to where they tap the slider
            if (Math.Abs(m_Slider.fillAmount) < 0.01f)
            {
                var pointerPos = eventData.LocalPosition(m_ContainerRect);
                var rect       = m_ContainerRect.rect;
                var factor     = (pointerPos.x + rect.width / 2f) / rect.width;
                if (m_NumberType == NumberType.Float)
                {
                    var value    = Mathf.Lerp(m_MinFloat, m_MaxFloat, factor);
                    var newFloat = ProcessNumber(value);
                    text = newFloat.ToString(m_FloatFieldFormatString);

                    onFloatValueChanged.Invoke(newFloat);
                }
                else
                {
                    var value  = Mathf.Lerp(m_MinInt, m_MaxInt, factor);
                    var newInt = ProcessNumber(Mathf.RoundToInt(value));
                    text = newInt.ToString(k_IntFieldFormatString);

                    onIntValueChanged.Invoke(newInt);
                }
            }

            m_SliderColorTween.startColor  = m_Slider.color;
            m_SliderColorTween.targetColor = UIConfig.propertySelectedColor;
            m_SliderColorTweenRunner.StartTween(m_SliderColorTween, EaseType.EaseOutCubic);
        }
 public override void OnBeginDrag(PointerEventData eventData)
 {
     m_LastPointerPosition = eventData.LocalPosition(m_Rect);
     if (float.TryParse(m_Text, out m_FloatValue))
     {
         m_IsDragging = true;
         m_DragValue  = 0;
         UpdateValue();
     }
 }
 public override void OnDrag(PointerEventData eventData)
 {
     if (m_IsDragging)
     {
         var pointerPos = eventData.LocalPosition(m_Rect);
         var delta      = pointerPos - m_LastPointerPosition;
         if (!float.IsInfinity(m_DragValue + delta.x * m_Increment) && !float.IsInfinity(m_FloatValue + delta.x * m_Increment))
         {
             m_DragValue  += delta.x * m_Increment;
             m_FloatValue += delta.x * m_Increment;
         }
         m_LastPointerPosition = pointerPos;
         UpdateValue();
     }
 }
Пример #4
0
        protected override void DoBeginDrag(PointerEventData eventData)
        {
            m_StartPointerPosition = eventData.LocalPosition(m_ContainerRect);

            if (m_NumberType == NumberType.Float)
            {
                if (!float.TryParse(text, out var num))
                {
                    num = 0f;
                }

                m_StartDragFloat = num;
            }
            else
            {
                if (!int.TryParse(text, out var intNum))
                {
                    intNum = 0;
                }

                m_StartDragInt = intNum;
            }
        }
Пример #5
0
        protected override void DoDrag(PointerEventData eventData)
        {
            float delta;
            var   pointerPos   = eventData.LocalPosition(m_ContainerRect);
            var   dragDistance = (pointerPos - m_StartPointerPosition).x;
            var   dragFactor   = dragDistance / m_ContainerRect.rect.width;

            if (m_NumberType == NumberType.Float)
            {
                delta = (m_MaxFloat - m_MinFloat) * dragFactor;
                var newFloat = ProcessNumber(m_StartDragFloat + delta);
                text = newFloat.ToString(m_FloatFieldFormatString);

                onFloatValueChanged.Invoke(newFloat);
            }
            else
            {
                delta = (m_MaxInt - m_MinInt) * dragFactor;
                var newInt = ProcessNumber(Mathf.RoundToInt(m_StartDragInt + delta));
                text = newInt.ToString(k_IntFieldFormatString);

                onIntValueChanged.Invoke(newInt);
            }
        }