private void OnDisable() { this.isDraging = false; IT_Gesture.remove_onDraggingStartE(new IT_Gesture.DraggingStartHandler(this.OnDraggingStart)); IT_Gesture.remove_onDraggingE(new IT_Gesture.DraggingHandler(this.OnDragging)); IT_Gesture.remove_onDraggingEndE(new IT_Gesture.DraggingEndHandler(this.OnDraggingEnd)); }
public static void OnMouse1Down(Vector2 pos) { if (IT_Gesture.onMouse1DownE != null) { IT_Gesture.onMouse1DownE(pos); } }
private void SwipeEnd(Vector2 startPos, Vector2 endPos, float timeStartSwipe, int index, bool isMouse) { if (onlyFireWhenLiftCursor) { if (!isMouse) { for (int i = 0; i < Input.touchCount; i++) { Touch touch = Input.touches[i]; if (touch.fingerId == index) { return; } } } else if (mouseIndex.Contains(index) || Time.realtimeSinceStartup - timeStartSwipe > maxSwipeDuration) { return; } } Vector2 dir = endPos - startPos; SwipeInfo sw = new SwipeInfo(startPos, endPos, dir, timeStartSwipe, index, isMouse); IT_Gesture.SwipeEnd(sw); if (!(dir.magnitude < minDistance * IT_Gesture.GetDPIFactor()) && !(Time.time - lastSwipeTime < minDurationBetweenSwipe)) { lastSwipeTime = Time.time; IT_Gesture.Swipe(sw); } }
private void CheckMultiTapTouch(int index, Vector2 startPos, Vector2 lastPos) { if (index >= multiTapTouch.Length) { return; } if (multiTapTouch[index].lastTapTime > Time.realtimeSinceStartup - multiTapInterval) { if (Vector2.Distance(startPos, multiTapTouch[index].lastPos) < multiTapPosSpacing * IT_Gesture.GetDPIFactor()) { multiTapTouch[index].count++; multiTapTouch[index].lastPos = startPos; multiTapTouch[index].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(startPos, lastPos, multiTapTouch[index].count, index, im: false)); if (multiTapTouch[index].count >= maxMultiTapCount) { multiTapTouch[index].count = 0; } } else { multiTapTouch[index].count = 1; multiTapTouch[index].lastPos = startPos; multiTapTouch[index].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(startPos, lastPos, 1, index, im: false)); } } else { multiTapTouch[index].count = 1; multiTapTouch[index].lastPos = startPos; multiTapTouch[index].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(startPos, lastPos, 1, index, im: false)); } }
public static void Rotate(RotateInfo RI) { if (IT_Gesture.onRotateE != null) { IT_Gesture.onRotateE(RI); } }
// Use this for initialization void Start() { if (enableMultiTapFilter) { IT_Gesture.SetMultiTapFilter(enableMultiTapFilter); IT_Gesture.SetMaxMultiTapCount(maxMultiTapCount); IT_Gesture.SetMaxMultiTapInterval(multiTapInterval); } for (int i = 0; i < multiTapMouse.Length; i++) { multiTapMouse[i] = new MultiTapTracker(i); } for (int i = 0; i < multiTapTouch.Length; i++) { multiTapTouch[i] = new MultiTapTracker(i); } for (int i = 0; i < multiTapMFTouch.Length; i++) { multiTapMFTouch[i] = new MultiTapTracker(i); } StartCoroutine(CheckMultiTapCount()); StartCoroutine(MultiFingerRoutine()); //Debug.Log(IT_Gesture.GetTouch(0).position); }
public static void DFDoubleTap(Vector2 pos) { if (IT_Gesture.onDFDoubleTapE != null) { IT_Gesture.onDFDoubleTapE(pos); } }
public static void DFChargingEnd(ChargedInfo cInfo) { if (IT_Gesture.onDFChargeEndE != null) { IT_Gesture.onDFChargeEndE(cInfo); } }
public static void OnMouse2(Vector2 pos) { if (IT_Gesture.onMouse2E != null) { IT_Gesture.onMouse2E(pos); } }
public static void DFDraggingEnd(DragInfo dragInfo) { if (IT_Gesture.onDualFDraggingEndE != null) { IT_Gesture.onDualFDraggingEndE(dragInfo.pos); } }
private void CheckFingerGroup(Touch touch) { bool flag = false; for (int i = 0; i < this.fingerGroup.Count; i++) { FingerGroup fingerGroup = this.fingerGroup[i]; if (!(Time.realtimeSinceStartup - fingerGroup.triggerTime < shortTapTime / 2f)) { continue; } bool flag2 = true; for (int j = 0; j < fingerGroup.indexes.Count; j++) { int iD = fingerGroup.indexes[j]; if (Vector2.Distance(IT_Gesture.GetTouch(iD).position, touch.position) > maxFingerGroupDist * IT_Gesture.GetDPIFactor()) { flag2 = false; } } if (flag2) { fingerGroup.indexes.Add(touch.fingerId); fingerGroup.positions.Add(touch.position); flag = true; break; } } if (!flag) { this.fingerGroup.Add(new FingerGroup(Time.realtimeSinceStartup, touch.fingerId, touch.position)); StartCoroutine(this.fingerGroup[this.fingerGroup.Count - 1].Routine(this)); } }
public static void Pinch(PinchInfo PI) { if (IT_Gesture.onPinchE != null) { IT_Gesture.onPinchE(PI); } }
void Swiping(Vector2 startPos, Vector2 endPos, float timeStartSwipe, int index, bool isMouse) { Vector2 swipeDir = endPos - startPos; SwipeInfo sw = new SwipeInfo(startPos, endPos, swipeDir, timeStartSwipe, index, isMouse); IT_Gesture.Swiping(sw); }
public static void Swipe(SwipeInfo sw) { if (IT_Gesture.onSwipeE != null) { IT_Gesture.onSwipeE(sw); } }
void CheckMultiTapMouse(int index, Vector2 startPos, Vector2 lastPos) { if (multiTapMouse[index].lastTapTime > Time.realtimeSinceStartup - multiTapInterval) { if (Vector2.Distance(startPos, multiTapMouse[index].lastPos) < multiTapPosSpacing * IT_Gesture.GetDPIFactor()) { multiTapMouse[index].count += 1; multiTapMouse[index].lastPos = startPos; multiTapMouse[index].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(startPos, lastPos, multiTapMouse[index].count, index, true)); if (multiTapMouse[index].count >= maxMultiTapCount) { multiTapMouse[index].count = 0; } } else { multiTapMouse[index].count = 1; multiTapMouse[index].lastPos = startPos; multiTapMouse[index].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(startPos, lastPos, 1, index, true)); } } else { multiTapMouse[index].count = 1; multiTapMouse[index].lastPos = startPos; multiTapMouse[index].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(startPos, lastPos, 1, index, true)); } }
public static void DFDragging(DragInfo dragInfo) { if (IT_Gesture.onDualFDraggingE != null) { IT_Gesture.onDualFDraggingE(dragInfo); } }
public static void ShortTap(Vector2 pos) { if (IT_Gesture.onShortTapE != null) { IT_Gesture.onShortTapE(pos); } }
// Update is called once per frame void Update() { if (Input.touchCount > 0) { //foreach(Touch touch in Input.touches){ for (int i = 0; i < Input.touches.Length; i++) { Touch touch = Input.touches[i]; //if(touch.phase==TouchPhase.Began) IT_Gesture.OnTouchDown(touch.position); //else if(touch.phase==TouchPhase.Ended) IT_Gesture.OnTouchUp(touch.position); //else IT_Gesture.OnTouch(touch.position); if (touch.phase == TouchPhase.Began) { IT_Gesture.OnTouchDown(touch); } else if (touch.phase == TouchPhase.Ended) { IT_Gesture.OnTouchUp(touch); } else { IT_Gesture.OnTouch(touch); } //IT_Gesture.OnTouch(touch); } } else if (Input.touchCount == 0) { //#if !(UNITY_ANDROID || UNITY_IPHONE) || UNITY_EDITOR if (Input.GetMouseButtonDown(0)) { IT_Gesture.OnMouse1Down(Input.mousePosition); } else if (Input.GetMouseButtonUp(0)) { IT_Gesture.OnMouse1Up(Input.mousePosition); } else if (Input.GetMouseButton(0)) { IT_Gesture.OnMouse1(Input.mousePosition); } if (Input.GetMouseButtonDown(1)) { IT_Gesture.OnMouse2Down(Input.mousePosition); } else if (Input.GetMouseButtonUp(1)) { IT_Gesture.OnMouse2Up(Input.mousePosition); } else if (Input.GetMouseButton(1)) { IT_Gesture.OnMouse2(Input.mousePosition); } //#endif } }
//called when pinch is detected void OnPinch(PinchInfo pinfo) { if (!ImageTarget.gameObject.activeInHierarchy) { return; } zoomSpeed -= pinfo.magnitude * zoomSpeedModifier / IT_Gesture.GetDPIFactor(); }
//called when one finger drag are detected void OnDragging(DragInfo dragInfo) { //apply the DPI scaling dragInfo.delta /= IT_Gesture.GetDPIFactor(); //vertical movement is corresponded to rotation in x-axis orbitSpeedX = -dragInfo.delta.y * rotXSpeedModifier; //horizontal movement is corresponded to rotation in y-axis orbitSpeedY = dragInfo.delta.x * rotYSpeedModifier; }
private IEnumerator TouchRoutine(int index) { fingerIndex.Add(index); bool dragStarted = false; Vector2 startPos = IT_Gesture.GetTouch(index).position; Vector2 lastPos = startPos; float timeStart = float.PositiveInfinity; while ((enableMultiDrag && Input.touchCount > 0) || (!enableMultiDrag && Input.touchCount == 1)) { Touch touch = IT_Gesture.GetTouch(index); if (touch.position == Vector2.zero) { break; } Vector2 curPos = touch.position; if (touch.phase == TouchPhase.Moved) { if (!dragStarted) { if (Vector3.Distance(curPos, startPos) > (float)minDragDistance * IT_Gesture.GetDPIFactor()) { dragStarted = true; Vector2 delta3 = curPos - startPos; DragInfo dragInfo4 = new DragInfo(curPos, delta3, 1, index, im: false); IT_Gesture.DraggingStart(dragInfo4); timeStart = Time.realtimeSinceStartup; } } else if (curPos != lastPos) { Vector2 delta2 = curPos - lastPos; DragInfo dragInfo3 = new DragInfo(curPos, delta2, 1, index, im: false); IT_Gesture.Dragging(dragInfo3); } lastPos = curPos; } else if (dragStarted && fireOnDraggingWhenNotMoving) { DragInfo dragInfo2 = new DragInfo(curPos, Vector2.zero, 1, index, im: false); IT_Gesture.Dragging(dragInfo2); } yield return(null); } if (dragStarted) { bool isFlick = false; if (Time.realtimeSinceStartup - timeStart < flickTimeRange) { isFlick = true; } Vector2 delta = lastPos - startPos; DragInfo dragInfo = new DragInfo(lastPos, delta, 1, index, isFlick, im: false); IT_Gesture.DraggingEnd(dragInfo); } fingerIndex.Remove(index); }
public void CheckMultiTapMFTouch(int fCount, Vector2[] posL, int[] indexes) { Vector2 a = Vector2.zero; for (int i = 0; i < posL.Length; i++) { a += posL[i]; } a /= posL.Length; int num = 0; bool flag = false; for (int j = 0; j < multiTapMFTouch.Length; j++) { MultiTapTracker multiTapTracker = multiTapMFTouch[j]; if (multiTapTracker.fingerCount == fCount && Vector2.Distance(a, multiTapTracker.lastPos) < multiTapPosSpacing * IT_Gesture.GetDPIFactor()) { flag = true; break; } num++; } if (!flag) { num = 0; for (int k = 0; k < multiTapMFTouch.Length; k++) { MultiTapTracker multiTapTracker2 = multiTapMFTouch[k]; if (multiTapTracker2.lastPos == Vector2.zero && multiTapTracker2.count == 0) { break; } num++; } } if (multiTapMFTouch[num].lastTapTime > Time.realtimeSinceStartup - multiTapInterval) { multiTapMFTouch[num].count++; multiTapMFTouch[num].lastPos = a; multiTapMFTouch[num].fingerCount = fCount; multiTapMFTouch[num].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(multiTapMFTouch[num].count, fCount, posL, indexes)); if (multiTapMFTouch[num].count >= maxMultiTapCount) { multiTapMFTouch[num].count = 0; } } else { multiTapMFTouch[num].count = 1; multiTapMFTouch[num].lastPos = a; multiTapMFTouch[num].fingerCount = fCount; multiTapMFTouch[num].lastTapTime = Time.realtimeSinceStartup; IT_Gesture.MultiTap(new Tap(multiTapMFTouch[num].count, fCount, posL, indexes)); } }
public SwipeInfo(Vector2 p1, Vector2 p2, Vector2 dir, float startT, int ind, bool im) { startPoint = p1; endPoint = p2; direction = dir; angle = IT_Gesture.VectorToAngle(dir); duration = Time.realtimeSinceStartup - startT; speed = dir.magnitude / duration; index = ind; isMouse = im; }
public static void OnTouch(Touch touch) { if (IT_Gesture.onTouchPosE != null) { IT_Gesture.onTouchPosE(touch.position); } if (IT_Gesture.onTouchE != null) { IT_Gesture.onTouchE(touch); } }
void SwipeEnd(Vector2 startPos, Vector2 endPos, float timeStartSwipe, int index, bool isMouse) { if (onlyFireWhenLiftCursor) { if (!isMouse) { for (int i = 0; i < Input.touchCount; i++) { Touch touch = Input.touches[i]; if (touch.fingerId == index) { return; } } } else { if (mouseIndex.Contains(index)) { //Debug.Log("mouse still down"); return; } if (Time.realtimeSinceStartup - timeStartSwipe > maxSwipeDuration) { //Debug.Log("too long "+(Time.realtimeSinceStartup-timeStartSwipe)); return; } } } Vector2 swipeDir = endPos - startPos; SwipeInfo sw = new SwipeInfo(startPos, endPos, swipeDir, timeStartSwipe, index, isMouse); IT_Gesture.SwipeEnd(sw); if ((swipeDir).magnitude < minDistance * IT_Gesture.GetDPIFactor()) { //GameMessage.DisplayMessage("too short"); return; } if (Time.time - lastSwipeTime < minDurationBetweenSwipe) { return; } lastSwipeTime = Time.time; IT_Gesture.Swipe(sw); //GameMessage.DisplayMessage("swiped"); }
private IEnumerator MFTapCoroutine(Tap tap) { yield return(new WaitForSeconds((float)maxMultiTapCount * maxMultiTapInterval)); if (MFtapExisted == tap.count) { MFtapExisted = 0; if (IT_Gesture.onMFMultiTapE != null) { IT_Gesture.onMFMultiTapE(tap); } } }
//called when one finger drag are detected void OnDragging(DragInfo dragInfo) { if (!ImageTarget.gameObject.activeInHierarchy) { return; } //apply the DPI scaling dragInfo.delta /= IT_Gesture.GetDPIFactor(); //vertical movement is corresponded to rotation in x-axis panSpeedY = dragInfo.delta.y * PanxSpeedModifier; //horizontal movement is corresponded to rotation in y-axis panSpeedX = dragInfo.delta.x * PanySpeedModifier; }
public static void ChargeStart(ChargedInfo cInfo) { if (cInfo.fingerCount > 1) { if (IT_Gesture.onMFChargeStartE != null) { IT_Gesture.onMFChargeStartE(cInfo); } } else if (IT_Gesture.onChargeStartE != null) { IT_Gesture.onChargeStartE(cInfo); } }
public static void DraggingStart(DragInfo dragInfo) { if (dragInfo.fingerCount > 1) { if (IT_Gesture.onMFDraggingStartE != null) { IT_Gesture.onMFDraggingStartE(dragInfo); } } else if (IT_Gesture.onDraggingStartE != null) { IT_Gesture.onDraggingStartE(dragInfo); } }
private void Update() { if (Input.touchCount > 0) { for (int i = 0; i < Input.touches.Length; i++) { Touch touch = Input.touches[i]; if (touch.phase == TouchPhase.Began) { IT_Gesture.OnTouchDown(touch); } else if (touch.phase == TouchPhase.Ended) { IT_Gesture.OnTouchUp(touch); } else { IT_Gesture.OnTouch(touch); } } } else if (Input.touchCount == 0) { if (Input.GetMouseButtonDown(0)) { IT_Gesture.OnMouse1Down(Input.mousePosition); } else if (Input.GetMouseButtonUp(0)) { IT_Gesture.OnMouse1Up(Input.mousePosition); } else if (Input.GetMouseButton(0)) { IT_Gesture.OnMouse1(Input.mousePosition); } if (Input.GetMouseButtonDown(1)) { IT_Gesture.OnMouse2Down(Input.mousePosition); } else if (Input.GetMouseButtonUp(1)) { IT_Gesture.OnMouse2Up(Input.mousePosition); } else if (Input.GetMouseButton(1)) { IT_Gesture.OnMouse2(Input.mousePosition); } } }
void Awake() { instance=this; }
void Awake() { if (Instance == null) Instance=this; }
void Awake() { instance = (IT_Gesture)target; }