public void setThumbsticks(TouchReturnPacket touchPacket)
    {
        Vector2 screenPoint;
        Vector2 newPlacement;

        // First the left thumbstick:
        if (touchPacket.getHasTouch()[0])
        {
            if (!thumbstickWasActive[0])
            {
                thumbstickWasActive[0] = true;
                stickBase_left.SetActive(true);
                stickKnob_left.SetActive(true);

                screenPoint = new Vector2(touchPacket.getStickCenterX()[0], touchPacket.getStickCenterY()[0]);
                RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, null, out newPlacement);
                stickBase_left_transform.anchoredPosition = newPlacement;
            }

            screenPoint = new Vector2(touchPacket.getTouchX()[0], touchPacket.getTouchY()[0]);
            RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, null, out newPlacement);

            newPlacement -= stickBase_left_transform.anchoredPosition;
            if (newPlacement.magnitude > stickMaxMag)
            {
                newPlacement = newPlacement.normalized * stickMaxMag;
            }

            realStickMag[0] = newPlacement.magnitude / stickMaxMag;

            newPlacement += stickBase_left_transform.anchoredPosition;

            stickKnob_left_transform.anchoredPosition = newPlacement;
        }
        else
        {
            if (thumbstickWasActive[0])
            {
                thumbstickWasActive[0] = false;
                stickBase_left.SetActive(false);
                stickKnob_left.SetActive(false);
                realStickMag[0] = 0f;
            }
        }


        // Then the right thumbstick:
        if (touchPacket.getHasTouch()[1])
        {
            if (!thumbstickWasActive[1])
            {
                thumbstickWasActive[1] = true;
                stickBase_right.SetActive(true);
                stickKnob_right.SetActive(true);

                screenPoint = new Vector2(touchPacket.getStickCenterX()[1], touchPacket.getStickCenterY()[1]);
                RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, null, out newPlacement);
                stickBase_right_transform.anchoredPosition = newPlacement;
            }

            screenPoint = new Vector2(touchPacket.getTouchX()[1], touchPacket.getTouchY()[1]);
            RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, null, out newPlacement);

            newPlacement -= stickBase_right_transform.anchoredPosition;
            if (newPlacement.magnitude > stickMaxMag)
            {
                newPlacement = newPlacement.normalized * stickMaxMag;
            }

            realStickMag[1] = newPlacement.magnitude / stickMaxMag;

            newPlacement += stickBase_right_transform.anchoredPosition;

            stickKnob_right_transform.anchoredPosition = newPlacement;
        }
        else
        {
            if (thumbstickWasActive[1])
            {
                thumbstickWasActive[1] = false;
                stickBase_right.SetActive(false);
                stickKnob_right.SetActive(false);
                realStickMag[1] = 0f;
            }
        }
    }