/// <summary> /// Called by Input.cs starting every frame a primary touch is detected, starting from the frame after TouchBegin is called. /// </summary> /// <param name="worldTouchPos">The world-space position of the primary touch.</param> public static void TouchMove(Vector3 worldTouchPos) { TouchInfo touchInfo = S.primaryTouchInfo; //world position touchInfo.worldPosition = worldTouchPos; // gridPosition Vector2Int gridPos = GridDisplayer.WorldToGrid(worldTouchPos); if (gridPos.x >= GRID_WIDTH || gridPos.x < 0 || gridPos.y >= GRID_HEIGHT || gridPos.y < 0) { touchInfo.gridPosition = new Vector2Int(int.MinValue, int.MinValue); } else { touchInfo.gridPosition = gridPos; } S.primaryTouchInfo = touchInfo; //if ((touchInfo.gridPosition - touchInfo.startGridPosition).magnitude >= 1 && !S.swipeHappenedThisTouch) //{ // S.shouldGetSwipedCell = true; // S.swipeHappenedThisTouch = true; //} }
/// <summary> /// Called by Input.cs on the frame a primary touch stops being detected. /// </summary> /// <param name="worldTouchPos">The world-space position of the touch when it left the screen.</param> public static void TouchEnd(Vector3 worldTouchPos) { TouchInfo touchInfo = S.primaryTouchInfo; // world position and end world position touchInfo.worldPosition = touchInfo.endWorldPosition = worldTouchPos; // gridPosition and endGridPosition Vector2Int gridPos = GridDisplayer.WorldToGrid(worldTouchPos); if (gridPos.x >= GRID_WIDTH || gridPos.x < 0 || gridPos.y >= GRID_HEIGHT || gridPos.y < 0) { touchInfo.gridPosition = new Vector2Int(int.MinValue, int.MinValue); } else { touchInfo.gridPosition = touchInfo.endGridPosition = gridPos; } S.primaryTouchInfo = touchInfo; if (touchInfo.swipeDirection != Vector2.zero) { S.shouldGetSwipedCell = true; } }
/// <summary> /// Called by Input.cs on the frame a primary touch is detected. /// </summary> /// <param name="worldTouchPos">The world-space position of the primary touch.</param> public static void TouchBegin(Vector3 worldTouchPos) { // touchInfo is a struct, so it's passed by value. // when we operate on primtouch, we're not actually updating S.primaryTouchInfo. TouchInfo primTouch = S.primaryTouchInfo; primTouch.touching = true; // worldPosition and startWorldPosition primTouch.worldPosition = primTouch.startWorldposition = worldTouchPos; // gridPosition and startGridPosition Vector2Int gridPos = GridDisplayer.WorldToGrid(worldTouchPos); if (gridPos.x >= GRID_WIDTH || gridPos.x < 0 || gridPos.y >= GRID_HEIGHT || gridPos.y < 0) { primTouch.gridPosition = new Vector2Int(int.MinValue, int.MinValue); } else { primTouch.gridPosition = primTouch.startGridPosition = gridPos; } // end positions primTouch.endWorldPosition = new Vector2(float.MinValue, float.MinValue); primTouch.endGridPosition = new Vector2Int(int.MinValue, int.MinValue); S.primaryTouchInfo = primTouch; }