void handleTouch() { if (Input.touchCount == 0) { finalizeTouch(); touchState = GlobalTouchState.PASSIVE; } else if (Input.touchCount == 1) { if (touchState == GlobalTouchState.TWO_FINGERS) { return; } t1 = Input.GetTouch(0); handleOneTouch(t1); } else if (Input.touchCount == 2) { t1 = Input.GetTouch(0); if (touchState == GlobalTouchState.ONE_FINGER) { handleOneTouch(t1); return; } t2 = Input.GetTouch(1); //touchState == GlobalTouchState.PASSIVE){// //t1.phase == TouchPhase.Began || t2.phase == TouchPhase.Began if (touchState == GlobalTouchState.PASSIVE || touchState == GlobalTouchState.ONE_FINGER_STATIONARY) { if (CanvasController.events.onDblTouchBegin != null) { CanvasController.events.onDblTouchBegin(t1, t2); } touchState = GlobalTouchState.TWO_FINGERS; } if (touchState != GlobalTouchState.TWO_FINGERS) { return; } if (t1.phase == TouchPhase.Moved || t2.phase == TouchPhase.Moved) { if (CanvasController.events.onDblTouch != null) { CanvasController.events.onDblTouch(t1, t2); } } } }
void finalizeTouch() { if (touchWithinWorkspace) { touchWithinWorkspace = false; } switch (touchState) { case GlobalTouchState.ONE_FINGER: case GlobalTouchState.TWO_FINGERS: if (CanvasController.events.onTouchEnd != null) { CanvasController.events.onTouchEnd(); } break; case GlobalTouchState.PASSIVE: break; } touchState = GlobalTouchState.PASSIVE; }
void handleOneTouch(Touch t) { canvasCamera.getCoordinates(t.position, ref globalPosition, ref pixelPosition); switch (t.phase) { case (TouchPhase.Began): touchState = GlobalTouchState.ONE_FINGER_STATIONARY; if (isMouseWithinCameraRect()) { if (CanvasController.events.onTouchStart != null) { CanvasController.events.onTouchStart(pixelPosition, globalPosition); } } break; case (TouchPhase.Stationary): case (TouchPhase.Moved): if (touchState == GlobalTouchState.ONE_FINGER_STATIONARY) { if (isMouseWithinCameraRect()) { if (CanvasController.events.onTouchStart != null) { CanvasController.events.onTouchStart(pixelPosition, globalPosition); } lastPixelPosition = new IntVector2(pixelPosition); lastWithinCamArea = true; } } if (isMouseWithinCameraRect()) { if (lastWithinCamArea) { if (CanvasController.events.onTouchOver != null) { CanvasController.events.onTouchOver(pixelPosition, globalPosition); } } else { if (CanvasController.events.onTouchStart != null) { CanvasController.events.onTouchStart(pixelPosition, globalPosition); } lastWithinCamArea = true; } lastPixelPosition = new IntVector2(pixelPosition); } else { if (lastWithinCamArea) { finalizeTouch(); } } touchState = GlobalTouchState.ONE_FINGER; break; case (TouchPhase.Canceled): case (TouchPhase.Ended): finalizeTouch(); break; } }