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(); } }
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; } }
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); } }