93 lines
2.2 KiB
C#
93 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace TG_TouchGesture
|
|
{
|
|
public class TG_TouchGestures : MonoBehaviour
|
|
{
|
|
private List<TG_TouchGestureBase> m_touchGestures = new List<TG_TouchGestureBase>();
|
|
|
|
private static TG_TouchGestures s_instance;
|
|
|
|
public EventHandler<TG_TouchGestureEventArgs> OnGestureDetected;
|
|
|
|
public static bool IsInstanceSet
|
|
{
|
|
get
|
|
{
|
|
return s_instance != null;
|
|
}
|
|
}
|
|
|
|
public static TG_TouchGestures Instance
|
|
{
|
|
get
|
|
{
|
|
if (s_instance == null)
|
|
{
|
|
GameObject gameObject = new GameObject("TG_TouchGestures");
|
|
UnityEngine.Object.DontDestroyOnLoad(gameObject);
|
|
s_instance = gameObject.AddComponent<TG_TouchGestures>();
|
|
}
|
|
return s_instance;
|
|
}
|
|
}
|
|
|
|
public void EnableGesture(TG_ETouchGestureType p_type)
|
|
{
|
|
foreach (TG_TouchGestureBase touchGesture in m_touchGestures)
|
|
{
|
|
if (touchGesture.Type == p_type)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
switch (p_type)
|
|
{
|
|
case TG_ETouchGestureType.TAP:
|
|
m_touchGestures.Add(new TG_TouchGestureTap());
|
|
break;
|
|
case TG_ETouchGestureType.PRESS_1_FINGER:
|
|
m_touchGestures.Add(new TG_TouchGesturePress(TG_ETouchGestureType.PRESS_1_FINGER, 1, 0.1f));
|
|
break;
|
|
case TG_ETouchGestureType.PRESS_2_FINGER:
|
|
m_touchGestures.Add(new TG_TouchGesturePress(TG_ETouchGestureType.PRESS_2_FINGER, 2, 0f));
|
|
break;
|
|
case TG_ETouchGestureType.PRESS_3_FINGER:
|
|
m_touchGestures.Add(new TG_TouchGesturePress(TG_ETouchGestureType.PRESS_3_FINGER, 3, 0f));
|
|
break;
|
|
case TG_ETouchGestureType.PRESS_4_FINGER:
|
|
m_touchGestures.Add(new TG_TouchGesturePress(TG_ETouchGestureType.PRESS_4_FINGER, 4, 0f));
|
|
break;
|
|
case TG_ETouchGestureType.ZOOM:
|
|
m_touchGestures.Add(new TG_TouchGestureZoom());
|
|
break;
|
|
default:
|
|
Debug.LogError(string.Concat("TG_TouchGestures: EnableGesture: unknown gesture type '", p_type, "'!"));
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (OnGestureDetected == null)
|
|
{
|
|
return;
|
|
}
|
|
foreach (TG_TouchGestureBase touchGesture in m_touchGestures)
|
|
{
|
|
TG_TouchGestureEventArgs e = touchGesture.Update();
|
|
if (e != null)
|
|
{
|
|
OnGestureDetected(touchGesture, e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|