private void TryCreateGestureTwoFingerGestureOnTouchBeganForTouchIndex <T>(int touchIndex, Func <Touch, Touch, T> createGestureFunction) where T : BaseGesture { if (GestureTouches.touches[touchIndex].phase != null) { return; } Touch touch = GestureTouches.touches[touchIndex]; if (GestureTouches.IsFingerIdRetained(touch.fingerId) || GestureTouches.IsTouchOffScreenEdge(touch, edgeThresholdInches)) { return; } for (int i = 0; i < GestureTouches.touches.Length; i++) { if (i != touchIndex) { if (i >= touchIndex || GestureTouches.touches[i].phase != null) { Touch touch2 = GestureTouches.touches[i]; if (!GestureTouches.IsFingerIdRetained(touch2.fingerId) && !GestureTouches.IsTouchOffScreenEdge(touch2, edgeThresholdInches)) { m_Gestures.Add(createGestureFunction(touch, touch2)); } } } } }
public static bool IsTouchOffScreenEdge(Touch touch, float edgeSlopInches) { float num = GestureTouches.InchesToPixels(edgeSlopInches); bool flag = touch.position.x <= num; flag |= (touch.position.y <= num); flag |= (touch.position.x >= (float)Screen.width - num); return(flag | touch.position.y >= (float)Screen.height - num); }
private void Awake() { if (s_instance != null) { Debug.LogError("More than one GestureTouches s_instance was found in your scene. Ensure that there is only one GestureTouches."); base.enabled = false; return; } s_instance = this; }
protected void TryCreateOneFingerGestureOnTouchBegan <T>(Func <Touch, T> createGestureFunction) where T : BaseGesture { for (int i = 0; i < GestureTouches.touches.Length; i++) { Touch touch = GestureTouches.touches[i]; if (touch.phase == null && !GestureTouches.IsFingerIdRetained(touch.fingerId) && ! GestureTouches.IsTouchOffScreenEdge(touch, edgeThresholdInches)) { m_Gestures.Add(createGestureFunction(touch)); } } }