using System; using System.Collections.Generic; using UnityEngine; namespace TG_TouchGesture { public class TG_TouchGestures : MonoBehaviour { private List m_touchGestures = new List(); private static TG_TouchGestures s_instance; public EventHandler 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(); } 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); } } } } }