forked from TouchScript/TouchScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTouchDebugger.cs
More file actions
124 lines (100 loc) · 3.64 KB
/
Copy pathTouchDebugger.cs
File metadata and controls
124 lines (100 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*
* @author Valentin Simonov / http://va.lent.in/
*/
using System.Collections.Generic;
using TouchScript.Events;
using UnityEngine;
namespace TouchScript.Debugging
{
/// <summary>
/// Visual debugger to show touches as GUI elements.
/// </summary>
[AddComponentMenu("TouchScript/Touch Debugger")]
public class TouchDebugger : MonoBehaviour
{
#region Public properties
/// <summary>
/// Texture to use.
/// </summary>
public Texture2D TouchTexture;
/// <summary>
/// Font color for touch ids.
/// </summary>
public Color FontColor;
#endregion
#region Private variables
private Dictionary<int, TouchPoint> dummies = new Dictionary<int, TouchPoint>();
#endregion
#region Unity methods
private void OnEnable()
{
if (TouchManager.Instance != null)
{
TouchManager.Instance.TouchesBegan += touchesBeganHandler;
TouchManager.Instance.TouchesEnded += touchesEndedHandler;
TouchManager.Instance.TouchesMoved += touchesMovedHandler;
TouchManager.Instance.TouchesCancelled += touchesCancelledHandler;
}
}
private void OnDisable()
{
if (TouchManager.Instance != null)
{
TouchManager.Instance.TouchesBegan -= touchesBeganHandler;
TouchManager.Instance.TouchesEnded -= touchesEndedHandler;
TouchManager.Instance.TouchesMoved -= touchesMovedHandler;
TouchManager.Instance.TouchesCancelled -= touchesCancelledHandler;
}
}
private void OnGUI()
{
if (TouchTexture == null) return;
GUI.color = FontColor;
foreach (KeyValuePair<int, TouchPoint> dummy in dummies)
{
var x = dummy.Value.Position.x;
var y = Screen.height - dummy.Value.Position.y;
GUI.DrawTexture(new Rect(x - TouchTexture.width/2, y - TouchTexture.height/2, TouchTexture.width, TouchTexture.height), TouchTexture, ScaleMode.ScaleToFit);
GUI.Label(new Rect(x + TouchTexture.width, y - 9, 60, 25), dummy.Value.Id.ToString());
}
}
#endregion
#region Private functions
private void updateDummy(TouchPoint dummy)
{
dummies[dummy.Id] = dummy;
}
#endregion
#region Event handlers
private void touchesBeganHandler(object sender, TouchEventArgs e)
{
foreach (var touchPoint in e.TouchPoints)
{
dummies.Add(touchPoint.Id, touchPoint);
}
}
private void touchesMovedHandler(object sender, TouchEventArgs e)
{
foreach (var touchPoint in e.TouchPoints)
{
TouchPoint dummy;
if (!dummies.TryGetValue(touchPoint.Id, out dummy)) return;
updateDummy(touchPoint);
}
}
private void touchesEndedHandler(object sender, TouchEventArgs e)
{
foreach (var touchPoint in e.TouchPoints)
{
TouchPoint dummy;
if (!dummies.TryGetValue(touchPoint.Id, out dummy)) return;
dummies.Remove(touchPoint.Id);
}
}
private void touchesCancelledHandler(object sender, TouchEventArgs e)
{
touchesEndedHandler(sender, e);
}
#endregion
}
}