void UpdateCameraMovementFromDrag() { TouchDragEvent = TouchManager.UpdateScreenDrag(); if (TouchDragEvent != null) { if (TouchDragEvent.Phase == TouchPhase.Began) { StartingCameraPoint = transform.position; } else if (TouchDragEvent.Phase == TouchPhase.Moved) { UpdateCameraLocation(StartingCameraPoint - (Vector3)(TouchDragEvent.CurrentDraggingScreenPoint - TouchDragEvent.StartDraggingScreenPoint) * Camera.UnitsPerPixel()); } } }
// TODO - Add dragging for touch. // TODO - Consolidate dragging into Mouse and Touch classes. public static TouchDragEvent UpdateScreenDrag() { var touches = TouchManager.GetTouches(); //if (IsTouch() && touches.Count == 2) { // if (DraggingTouchId == NOT_DRAGGING) { // if (IsTouch()) { // var touch = touches.First(); // if (touch.IsConsumed() || EventSystem.current.IsPointerOverGameObject()) { // return false; // } // StartDraggingScreenPoint = touch.ScreenPosition; // DraggingTouchId = touch.ID; // //StartingCameraPoint = transform.position; // return true; // } // else if (IsMouse()) { // var touch = touches.Get(MOUSE_RIGHT_CLICK_ID); // if (touch.IsConsumed() || EventSystem.current.IsPointerOverGameObject()) { // return false; // } // StartDraggingScreenPoint = touch.ScreenPosition; // DraggingTouchId = touch.ID; // //StartingCameraPoint = transform.position; // return true; // } // } // else if (DraggingTouchId != NOT_DRAGGING && touches.Get(DraggingTouchId) != null) { // var touch = touches.Get(DraggingTouchId); // if (!touch.IsConsumed() && touch.Phase == TouchPhase.Moved) { // UpdateCameraLocation(ClampedViewRect.Clamp(StartingCameraPoint - (Vector3)(touch.ScreenPosition - StartDraggingScreenPoint) * Camera.UnitsPerPixel())); // //Debug.Log(touch.Velocity); // return touch.ScreenPosition; // } // } //} //else { // DraggingTouchId = NOT_DRAGGING; //} if (IsMouse() && touches.Get(MOUSE_RIGHT_CLICK_ID) != null) { if (TouchDragEvent == null) { var touch = touches.Get(MOUSE_RIGHT_CLICK_ID); if (touch.IsConsumed() || EventSystem.current != null && EventSystem.current.IsPointerOverGameObject()) { return(null); } TouchDragEvent = new TouchDragEvent() { StartDraggingScreenPoint = touch.ScreenPosition, CurrentDraggingScreenPoint = touch.ScreenPosition, DraggingTouchIds = new List <int> { touch.ID }, Phase = TouchPhase.Began }; //StartingCameraPoint = transform.position; return(TouchDragEvent); } else if (TouchDragEvent != null && TouchDragEvent.StillDragging(touches)) { var touch = TouchDragEvent.GetPrimaryTouch(touches); TouchDragEvent.Phase = touch.Phase; if (!touch.IsConsumed() && touch.Phase == TouchPhase.Moved) { //UpdateCameraLocation(ClampedViewRect.Clamp(StartingCameraPoint - (Vector3)(touch.ScreenPosition - StartDraggingScreenPoint) * Camera.UnitsPerPixel())); //Debug.Log(touch.Velocity); TouchDragEvent.CurrentDraggingScreenPoint = touch.ScreenPosition; return(TouchDragEvent); } } } else { TouchDragEvent = null; } return(TouchDragEvent); }