public void OnEndDrag(PointerEventData eventData)
    {
        var startWorldPosition = eventData.pointerPressRaycast.worldPosition;

        var endScreenPosition3D = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance);

        Vector3 endWorldPosition = Camera.main.ScreenToWorldPoint(endScreenPosition3D);

        Debug.DrawLine(startWorldPosition, endWorldPosition, Color.red, 50000);
        //Debug.Log($"Start OnEndDrag {startWorldPosition} , {endWorldPosition}");

        var resultVector = endWorldPosition - startWorldPosition;
        var crossVector  = Vector3.Cross(eventData.pointerPressRaycast.worldNormal, resultVector); // We want to turn the cube around the axis that is nearest to this


        var axisTurningWayPair = AxisExtensions.Vector3ToAxis(crossVector, transform);

        Axis  axis       = axisTurningWayPair.Key;
        float turningWay = Mathf.Sign(axisTurningWayPair.Value);

        //Debug.Log($"Chosen Axis: {axis}");

        float positionValue = AxisExtensions.GetValueAtAxis(axis, eventData.pointerPressRaycast.gameObject.transform.localPosition);

        cubeScript.RotateSide(axis, positionValue, turningWay * 90);
    }
    public StickerData(Axis axis, Vector3 position, StickerColor color)
    {
        this.color = color;
        cubeSide   = GetCubeSide(axis, AxisExtensions.GetValueAtAxis(axis, position));

        Vector2 vector2 = AxisExtensions.GetValuesExceptAxis(axis, position);

        this.x = vector2.x;
        this.y = vector2.y;
    }