Tanoda
pb_DraggableInputField.cs
Go to the documentation of this file.
1using UnityEngine;
2using UnityEngine.UI;
4using System.Collections;
5
6namespace GILES.Interface
7{
11 public class pb_DraggableInputField : InputField
12 {
13 private bool isDraggingValue = false;
14 private float value = 0f;
15
16 public override void OnBeginDrag(PointerEventData eventData)
17 {
18 if( (contentType == ContentType.IntegerNumber ||
19 contentType == ContentType.DecimalNumber) &&
20 IsInteractable() &&
21 (eventData.button == PointerEventData.InputButton.Right || (eventData.button == PointerEventData.InputButton.Left && Input.GetKey(KeyCode.LeftAlt))))
22 {
23 string v = m_TextComponent.text;
24
25 if(!float.TryParse(v, out value))
26 value = 0f;
27
28 isDraggingValue = true;
29 }
30 else
31 {
32 base.OnBeginDrag(eventData);
33 }
34 }
35
36 public override void OnDrag(PointerEventData eventData)
37 {
38 if(!isDraggingValue)
39 {
40 base.OnDrag(eventData);
41 }
42 else
43 {
44 float x = eventData.delta.x, y = eventData.delta.y;
45 value += (Mathf.Abs(x) > Mathf.Abs(y) ? x : y) / 10f;
46 text = contentType == ContentType.DecimalNumber ? value.ToString("g") : ((int)value).ToString();
47 }
48 }
49
50 public override void OnEndDrag(PointerEventData eventData)
51 {
52 isDraggingValue = false;
53
54 base.OnEndDrag(eventData);
55 }
56 }
57}
override void OnDrag(PointerEventData eventData)
override void OnEndDrag(PointerEventData eventData)
override void OnBeginDrag(PointerEventData eventData)