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);
    }