void SwipeStart(Vector2 pos) { //GameMessage.DisplayMessage("swipe start"); timeStartSwipe = Time.time; swipeStartPos = pos; swipeState = _SwipeState.Swiping; //Gesture.SwipeStart(pos); }
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); }
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"); }
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"); }
// 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); }