Beispiel #1
0
 void SwipeStart(Vector2 pos)
 {
     //GameMessage.DisplayMessage("swipe start");
     timeStartSwipe = Time.time;
     swipeStartPos  = pos;
     swipeState     = _SwipeState.Swiping;
     //Gesture.SwipeStart(pos);
 }
Beispiel #2
0
    void SwipeEnd(Vector2 pos)
    {
        swipeState = _SwipeState.End;
        swipeDir   = pos - swipeStartPos;

        if ((swipeDir).magnitude < minDistance)
        {
            //Debug.Log("too short");
            //GameMessage.DisplayMessage("too short");
            return;
        }

        //GameMessage.DisplayMessage("swipe end "+pos);

        SwipeInfo sw = new SwipeInfo(swipeStartPos, pos, swipeDir, timeStartSwipe);

        Gesture.Swipe(sw);
    }
Beispiel #3
0
    IEnumerator MouseSwipeRoutine(int index)
    {
        //GameMessage.DisplayMessage("swipe routine started");
        //Debug.Log("swipe routine started........................");
        mouseIndex.Add(index);

        float       timeStartSwipe = Time.realtimeSinceStartup;
        Vector2     initialPos;         //initial pos when mouse is down
        Vector2     startPos;
        Vector2     initVector = Vector2.zero;
        Vector2     lastPos    = Vector2.zero;
        _SwipeState swipeState = _SwipeState.None;

        lastPos    = Input.mousePosition;
        startPos   = lastPos;
        initialPos = lastPos;

        int count = 0;

        yield return(null);

        while (mouseIndex.Contains(index))
        {
            Vector2 curPos    = Input.mousePosition;
            Vector2 curVector = curPos - lastPos;

            float mag = curVector.magnitude;

            count += 1;

            if (swipeState == _SwipeState.None && mag > 0)
            {
                timeStartSwipe = Time.realtimeSinceStartup;
                //startPos=curPos;
                startPos   = initialPos;
                swipeState = _SwipeState.Swiping;
                initVector = curVector;
                count      = 1;

                SwipeStart(startPos, curPos, timeStartSwipe, index, true);
            }
            else if (swipeState == _SwipeState.Swiping)
            {
                if (count < 3)
                {
                    initVector = (initVector + curVector) * 0.5f;
                }

                if (mag > 0)
                {
                    Swiping(startPos, curPos, timeStartSwipe, index, true);

                    if (curPos.x < 0 || curPos.x > Screen.width || curPos.y < 0 || curPos.y > Screen.height)
                    {
                        //GameMessage.DisplayMessage("out of bound");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                        initialPos = curPos;
                    }
                    if (Time.realtimeSinceStartup - timeStartSwipe > maxSwipeDuration)
                    {
                        //GameMessage.DisplayMessage("duration due");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                        initialPos = curPos;
                    }
                    //check angle
                    if (Mathf.Abs(Vector2.Angle(initVector, curVector)) > maxDirectionChange)
                    {
                        //GameMessage.DisplayMessage("angle too wide");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                        initialPos = curPos;
                    }
                    //check speed
                    if (Mathf.Abs((curPos - startPos).magnitude / (Time.realtimeSinceStartup - timeStartSwipe)) < minSpeed)
                    {
                        //GameMessage.DisplayMessage("too slow");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                        initialPos = curPos;
                    }
                }
            }

            lastPos = curPos;

            yield return(null);
        }

        if (swipeState == _SwipeState.Swiping)
        {
            swipeState = _SwipeState.None;
            SwipeEnd(startPos, lastPos, timeStartSwipe, index, true);
        }

        //GameMessage.DisplayMessage("swipe routine ended");
    }
Beispiel #4
0
    IEnumerator TouchSwipeRoutine(int index)
    {
        //GameMessage.DisplayMessage("swipe routine started");
        fingerIndex.Add(index);

        float       timeStartSwipe = Time.realtimeSinceStartup;
        Vector2     initialPos;
        Vector2     startPos;
        Vector2     initVector = Vector2.zero;
        Vector2     lastPos    = Vector2.zero;
        _SwipeState swipeState = _SwipeState.None;

        lastPos    = IT_Gesture.GetTouch(index).position;
        startPos   = lastPos;
        initialPos = lastPos;

        int count = 0;

        yield return(null);

        while (Input.touchCount > 0)
        {
            if (!enableMultiSwipe && Input.touchCount > 1)
            {
                break;
            }

            Touch touch = IT_Gesture.GetTouch(index);

            if (touch.position == Vector2.zero)
            {
                break;
            }

            Vector2 curPos    = touch.position;
            Vector2 curVector = curPos - lastPos;

            float mag = curVector.magnitude;

            count += 1;

            if (swipeState == _SwipeState.None && mag > 0)
            {
                timeStartSwipe = Time.realtimeSinceStartup;
                //startPos=curPos;
                startPos   = initialPos;
                swipeState = _SwipeState.Swiping;
                initVector = curVector;

                count = 1;

                SwipeStart(startPos, curPos, timeStartSwipe, index, false);
            }
            else if (swipeState == _SwipeState.Swiping)
            {
                if (count < 3)
                {
                    initVector = (initVector + curVector) * 0.5f;
                }

                if (mag > 0)
                {
                    Swiping(startPos, curPos, timeStartSwipe, index, false);

                    if (curPos.x < 0 || curPos.x > Screen.width || curPos.y < 0 || curPos.y > Screen.height)
                    {
                        //GameMessage.DisplayMessage("out of bound");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                        initialPos = curPos;
                    }
                    if (Time.realtimeSinceStartup - timeStartSwipe > maxSwipeDuration)
                    {
                        //GameMessage.DisplayMessage("duration due");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                        initialPos = curPos;
                    }
                    //check angle
                    if (Mathf.Abs(Vector2.Angle(initVector, curVector)) > maxDirectionChange)
                    {
                        //GameMessage.DisplayMessage("angle is too wide "+initVector+"   "+curVector);
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                        initialPos = curPos;
                    }
                    //check speed
                    if (Mathf.Abs((curPos - startPos).magnitude / (Time.realtimeSinceStartup - timeStartSwipe)) < minSpeed)
                    {
                        //GameMessage.DisplayMessage("too slow");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                        initialPos = curPos;
                    }
                }
            }

            lastPos = curPos;

            yield return(null);
        }

        if (swipeState == _SwipeState.Swiping)
        {
            swipeState = _SwipeState.None;
            SwipeEnd(startPos, lastPos, timeStartSwipe, index);
        }

        fingerIndex.Remove(index);
        //GameMessage.DisplayMessage("swipe routine ended");
    }
    IEnumerator MouseSwipeRoutine(int index)
    {
        //GameMessage.DisplayMessage("swipe routine started");
        mouseIndex.Add(index);

        float       timeStartSwipe = Time.time;
        Vector2     startPos;
        Vector2     initVector = Vector2.zero;
        Vector2     lastPos    = Vector2.zero;
        _SwipeState swipeState = _SwipeState.None;

        lastPos  = Input.mousePosition;
        startPos = lastPos;

        yield return(null);

        while (mouseIndex.Contains(index))
        {
            Vector2 curPos    = Input.mousePosition;
            Vector2 curVector = curPos - lastPos;

            float mag = curVector.magnitude;

            if (swipeState == _SwipeState.None && mag > 0)
            {
                timeStartSwipe = Time.time;
                startPos       = curPos;
                swipeState     = _SwipeState.Swiping;
                initVector     = curVector;

                SwipeStart(startPos, curPos, timeStartSwipe, index, true);
            }
            else if (swipeState == _SwipeState.Swiping)
            {
                if (mag > 0)
                {
                    Swiping(startPos, curPos, timeStartSwipe, index, true);

                    if (Time.time - timeStartSwipe > maxSwipeDuration)
                    {
                        //GameMessage.DisplayMessage("duration due");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                    }
                    //check angle
                    if (Mathf.Abs(Vector2.Angle(initVector, curVector)) > maxDirectionChange)
                    {
                        //GameMessage.DisplayMessage("angle too wide");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                    }
                    //check speed
                    if (Mathf.Abs((curPos - startPos).magnitude / (Time.time - timeStartSwipe)) < minSpeed)
                    {
                        //GameMessage.DisplayMessage("too slow");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, true);
                    }
                }
            }

            lastPos = curPos;

            yield return(null);
        }

        if (swipeState == _SwipeState.Swiping)
        {
            swipeState = _SwipeState.None;
            SwipeEnd(startPos, lastPos, timeStartSwipe, index, true);
        }

        //GameMessage.DisplayMessage("swipe routine ended");
    }
    IEnumerator TouchSwipeRoutine(int index)
    {
        //GameMessage.DisplayMessage("swipe routine started");
        fingerIndex.Add(index);

        float       timeStartSwipe = Time.time;
        Vector2     startPos;
        Vector2     initVector = Vector2.zero;
        Vector2     lastPos    = Vector2.zero;
        _SwipeState swipeState = _SwipeState.None;

        lastPos  = Gesture.GetTouch(index).position;
        startPos = lastPos;

        yield return(null);

        while (Input.touchCount > 0)
        {
            Touch touch = Gesture.GetTouch(index);

            if (touch.position == Vector2.zero)
            {
                break;
            }

            Vector2 curPos    = touch.position;
            Vector2 curVector = curPos - lastPos;

            float mag = curVector.magnitude;

            if (swipeState == _SwipeState.None && mag > 0)
            {
                timeStartSwipe = Time.time;
                startPos       = curPos;
                swipeState     = _SwipeState.Swiping;
                initVector     = curVector;

                SwipeStart(startPos, curPos, timeStartSwipe, index, false);
            }
            else if (swipeState == _SwipeState.Swiping)
            {
                if (mag > 0)
                {
                    Swiping(startPos, curPos, timeStartSwipe, index, false);

                    if (Time.time - timeStartSwipe > maxSwipeDuration)
                    {
                        //GameMessage.DisplayMessage("duration due");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                    }
                    //check angle
                    if (Mathf.Abs(Vector2.Angle(initVector, curVector)) > maxDirectionChange)
                    {
                        //GameMessage.DisplayMessage("angle is too wide "+initVector+"   "+curVector);
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                    }
                    //check speed
                    if (Mathf.Abs((curPos - startPos).magnitude / (Time.time - timeStartSwipe)) < minSpeed)
                    {
                        //GameMessage.DisplayMessage("too slow");
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                    }
                }
            }

            lastPos = curPos;

            yield return(null);
        }

        if (swipeState == _SwipeState.Swiping)
        {
            swipeState = _SwipeState.None;
            SwipeEnd(startPos, lastPos, timeStartSwipe, index);
        }

        fingerIndex.Remove(index);
        //GameMessage.DisplayMessage("swipe routine ended");
    }
Beispiel #7
0
    // Update is called once per frame
    void Update()
    {
        InputEvent inputEvent = new InputEvent();

        if (Input.touchCount == 1)
        {
            Touch       touch = Input.touches[0];
            _InputState state;
            if (touch.phase == TouchPhase.Began)
            {
                state = _InputState.Down;
            }
            else if (touch.phase == TouchPhase.Ended)
            {
                state = _InputState.Up;
            }
            else
            {
                state = _InputState.On;
            }
            inputEvent = new InputEvent(touch.position, _InputType.Touch, state);
        }
        if (Input.touchCount == 0)
        {
            if (Input.GetMouseButtonDown(0))
            {
                inputEvent = new InputEvent(Input.mousePosition, _InputType.Mouse1, _InputState.Down);
            }
            else if (Input.GetMouseButton(0))
            {
                inputEvent = new InputEvent(Input.mousePosition, _InputType.Mouse1, _InputState.On);
            }
            else if (Input.GetMouseButtonUp(0))
            {
                inputEvent = new InputEvent(Input.mousePosition, _InputType.Mouse1, _InputState.Up);
            }
            else if (Input.GetMouseButtonDown(1))
            {
                inputEvent = new InputEvent(Input.mousePosition, _InputType.Mouse2, _InputState.Down);
            }
            else if (Input.GetMouseButton(1))
            {
                inputEvent = new InputEvent(Input.mousePosition, _InputType.Mouse2, _InputState.On);
            }
            else if (Input.GetMouseButtonUp(1))
            {
                inputEvent = new InputEvent(Input.mousePosition, _InputType.Mouse2, _InputState.Up);
            }
        }

        if (inputEvent.inputType != _InputType.None)
        {
            Vector2 curPos = inputEvent.pos;

            if (inputEvent.inputState == _InputState.Down)
            {
                lastTouchPos = curPos;
            }
            if (inputEvent.inputState == _InputState.On)
            {
                Vector2 curVector = curPos - lastTouchPos;

                if (Mathf.Abs(curVector.magnitude) > 0)
                {
                    if (swipeState == _SwipeState.None)
                    {
                        SwipeStart(curPos);
                        //initVector=curPos-lastTouchPos;
                        initVector = curVector;
                    }
                    else if (swipeState == _SwipeState.Swiping)
                    {
                        //GameMessage.DisplayMessage("swiping");
                        if (Time.time - timeStartSwipe > maxSwipeDuration)
                        {
                            //GameMessage.DisplayMessage("duration due");
                            SwipeEnd(curPos);
                        }
                        //check angle
                        if (Mathf.Abs(Vector2.Angle(initVector, curVector)) > maxDirectionChange)
                        {
                            //GameMessage.DisplayMessage("angle is too wide "+initVector+"   "+curVector);
                            SwipeEnd(curPos);
                        }
                        //check speed
                        if (Mathf.Abs((curVector).magnitude / (Time.time - timeStartSwipe)) < minSpeed)
                        {
                            //GameMessage.DisplayMessage("too slow");
                            SwipeEnd(curPos);
                        }
                    }

                    //Gesture.Dragging(touch.deltaPosition);
                    lastTouchPos = curPos;
                }
            }
            if (inputEvent.inputState == _InputState.Up)
            {
                if (swipeState == _SwipeState.Swiping)
                {
                    SwipeEnd(lastTouchPos);
                }
                else if (swipeState == _SwipeState.End)
                {
                    swipeState = _SwipeState.None;
                }
            }
        }
        //~ else{
        //~ if(swipeState==_SwipeState.Swiping){
        //~ SwipeEnd(lastTouchPos);
        //~ }
        //~ else if(swipeState==_SwipeState.End){
        //~ swipeState=_SwipeState.None;
        //~ }
        //~ }

        /*
         #if UNITY_IPHONE || UNITY_ANDROID
         *      if(Input.touchCount==1){
         *
         *              Touch touch=Input.touches[0];
         *              Vector2 curPos=touch.position;
         *
         *              if(firstTouch){
         *                      firstTouch=false;
         *                      lastTouchPos=curPos;
         *              }
         *
         *              Vector2 curVector=curPos-lastTouchPos;
         *
         *              if(Mathf.Abs(curVector.magnitude)>0){
         *
         *                      if(swipeState==_SwipeState.None){
         *                              SwipeStart(curPos);
         *                              //initVector=curPos-lastTouchPos;
         *                              initVector=curVector;
         *                      }
         *                      else if(swipeState==_SwipeState.Swiping){
         *                              //GameMessage.DisplayMessage("swiping");
         *                              if(Time.time-timeStartSwipe>maxSwipeDuration){
         *                                      //GameMessage.DisplayMessage("duration due");
         *                                      SwipeEnd(curPos);
         *                              }
         *                              //check angle
         *                              if(Mathf.Abs(Vector2.Angle(initVector, curVector))>maxDirectionChange){
         *                                      //GameMessage.DisplayMessage("angle is too wide "+initVector+"   "+curVector);
         *                                      SwipeEnd(curPos);
         *                              }
         *                              //check speed
         *                              if(Mathf.Abs((curVector).magnitude/(Time.time-timeStartSwipe))<minSpeed){
         *                                      //GameMessage.DisplayMessage("too slow");
         *                                      SwipeEnd(curPos);
         *                              }
         *
         *                      }
         *
         *                      //Gesture.Dragging(touch.deltaPosition);
         *                      lastTouchPos=curPos;
         *              }
         *
         *
         *
         *      }
         *      else{
         *              if(!firstTouch) firstTouch=true;
         *
         *              if(swipeState==_SwipeState.Swiping){
         *                      SwipeEnd(lastTouchPos);
         *              }
         *              else if(swipeState==_SwipeState.End){
         *                      swipeState=_SwipeState.None;
         *              }
         *              //lastTouchPos=new Vector2(-9999, -9999);
         *      }
         #endif
         *
         #if (!UNITY_IPHONE && !UNITY_ANDROID) //|| UNITY_EDITOR
         *
         *      if(Input.GetMouseButton(0)){
         *              Vector2 curPos=Input.mousePosition;
         *              Vector2 delta=curPos-lastMousePos;
         *
         *              if(Mathf.Abs((delta).magnitude)>0){
         *                      //Debug.Log(curPos+"   "+lastMousePos+"   "+delta+"   "+Mathf.Abs((delta).magnitude));
         *                      if(swipeState==_SwipeState.None){
         *                              SwipeStart(curPos);
         *                              initVector=delta;
         *                      }
         *                      else if(swipeState==_SwipeState.Swiping){
         *                              if(Time.time-timeStartSwipe>maxSwipeDuration){
         *                                      //Debug.Log("duration due");
         *                                      //GameMessage.DisplayMessage("duration due");
         *                                      SwipeEnd(curPos);
         *                              }
         *                              //check angle
         *                              Vector2 curVector=curPos-swipeStartPos;
         *                              if(Mathf.Abs(Vector2.Angle(initVector, curVector))>maxDirectionChange){
         *                                      //Debug.Log("angle is too wide");
         *                                      //GameMessage.DisplayMessage("angle is too wide");
         *                                      SwipeEnd(curPos);
         *                              }
         *                              //check speed
         *                              if(Mathf.Abs((curVector).magnitude/(Time.time-timeStartSwipe))<minSpeed){
         *                                      //Debug.Log("too slow");
         *                                      //GameMessage.DisplayMessage("too slow");
         *                                      SwipeEnd(curPos);
         *                              }
         *                      }
         *
         *                      lastMousePos=curPos;
         *              }
         *
         *              //count+=1;
         *      }
         *
         *
         *      if(Input.GetMouseButtonUp(0)){
         *              if(swipeState==_SwipeState.Swiping){
         *                      SwipeEnd(lastMousePos);
         *              }
         *              swipeState=_SwipeState.None;
         *      }
         *
         *      lastMousePos=Input.mousePosition;
         #endif
         */
    }
    private IEnumerator MouseSwipeRoutine(int index)
    {
        mouseIndex.Add(index);
        float       timeStartSwipe = Time.realtimeSinceStartup;
        Vector2     initVector     = Vector2.zero;
        Vector2     zero           = Vector2.zero;
        _SwipeState swipeState     = _SwipeState.None;
        Vector2     lastPos        = Input.mousePosition;
        Vector2     startPos       = lastPos;
        Vector2     initialPos     = lastPos;
        int         count          = 0;

        yield return(null);

        while (mouseIndex.Contains(index))
        {
            Vector2 curPos    = Input.mousePosition;
            Vector2 curVector = curPos - lastPos;
            float   mag       = curVector.magnitude;
            count++;
            if (swipeState == _SwipeState.None && mag > 0f)
            {
                timeStartSwipe = Time.realtimeSinceStartup;
                startPos       = initialPos;
                swipeState     = _SwipeState.Swiping;
                initVector     = curVector;
                count          = 1;
                SwipeStart(startPos, curPos, timeStartSwipe, index, isMouse: true);
            }
            else if (swipeState == _SwipeState.Swiping)
            {
                if (count < 3)
                {
                    initVector = (initVector + curVector) * 0.5f;
                }
                if (mag > 0f)
                {
                    Swiping(startPos, curPos, timeStartSwipe, index, isMouse: true);
                    if (curPos.x < 0f || curPos.x > (float)Screen.width || curPos.y < 0f || curPos.y > (float)Screen.height)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, isMouse: true);
                        initialPos = curPos;
                    }
                    if (Time.realtimeSinceStartup - timeStartSwipe > maxSwipeDuration)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, isMouse: true);
                        initialPos = curPos;
                    }
                    if (Mathf.Abs(Vector2.Angle(initVector, curVector)) > maxDirectionChange)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, isMouse: true);
                        initialPos = curPos;
                    }
                    if (Mathf.Abs((curPos - startPos).magnitude / (Time.realtimeSinceStartup - timeStartSwipe)) < minSpeed)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, isMouse: true);
                        initialPos = curPos;
                    }
                }
            }
            lastPos = curPos;
            yield return(null);
        }
        if (swipeState == _SwipeState.Swiping)
        {
            SwipeEnd(startPos, lastPos, timeStartSwipe, index, isMouse: true);
        }
    }
    private IEnumerator TouchSwipeRoutine(int index)
    {
        fingerIndex.Add(index);
        float       timeStartSwipe = Time.realtimeSinceStartup;
        Vector2     initVector     = Vector2.zero;
        Vector2     zero           = Vector2.zero;
        _SwipeState swipeState     = _SwipeState.None;
        Vector2     lastPos        = IT_Gesture.GetTouch(index).position;
        Vector2     startPos       = lastPos;
        Vector2     initialPos     = lastPos;
        int         count          = 0;

        yield return(null);

        while (Input.touchCount > 0 && (enableMultiSwipe || Input.touchCount <= 1))
        {
            Touch touch = IT_Gesture.GetTouch(index);
            if (touch.position == Vector2.zero)
            {
                break;
            }
            Vector2 curPos    = touch.position;
            Vector2 curVector = curPos - lastPos;
            float   mag       = curVector.magnitude;
            count++;
            if (swipeState == _SwipeState.None && mag > 0f)
            {
                timeStartSwipe = Time.realtimeSinceStartup;
                startPos       = initialPos;
                swipeState     = _SwipeState.Swiping;
                initVector     = curVector;
                count          = 1;
                SwipeStart(startPos, curPos, timeStartSwipe, index, isMouse: false);
            }
            else if (swipeState == _SwipeState.Swiping)
            {
                if (count < 3)
                {
                    initVector = (initVector + curVector) * 0.5f;
                }
                if (mag > 0f)
                {
                    Swiping(startPos, curPos, timeStartSwipe, index, isMouse: false);
                    if (curPos.x < 0f || curPos.x > (float)Screen.width || curPos.y < 0f || curPos.y > (float)Screen.height)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index, isMouse: true);
                        initialPos = curPos;
                    }
                    if (Time.realtimeSinceStartup - timeStartSwipe > maxSwipeDuration)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                        initialPos = curPos;
                    }
                    if (Mathf.Abs(Vector2.Angle(initVector, curVector)) > maxDirectionChange)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                        initialPos = curPos;
                    }
                    if (Mathf.Abs((curPos - startPos).magnitude / (Time.realtimeSinceStartup - timeStartSwipe)) < minSpeed)
                    {
                        swipeState = _SwipeState.None;
                        SwipeEnd(startPos, curPos, timeStartSwipe, index);
                        initialPos = curPos;
                    }
                }
            }
            lastPos = curPos;
            yield return(null);
        }
        if (swipeState == _SwipeState.Swiping)
        {
            SwipeEnd(startPos, lastPos, timeStartSwipe, index);
        }
        fingerIndex.Remove(index);
    }