/*WORKING*/
    public static HullCollision2D detectCollisionResponse(CircleHull2D circle, AABBHull2D square)
    {
        float   dist = Vector2.Distance(circle.position, square.GetClosestPoint(circle.position));
        Vector2 squareClosestPoint = square.GetClosestPoint(circle.position);
        Vector2 circleClosestPoint = circle.GetClosestPoint(squareClosestPoint); //need to do second

        Debug.DrawLine(squareClosestPoint, circleClosestPoint);
        if (circle.radius > dist)
        {
            Vector2 pen     = squareClosestPoint - circleClosestPoint;
            Vector2 penNorm = pen.normalized;
            if (penNorm.x > penNorm.y)
            {
                pen.y = 0.0f;
            }
            else
            {
                pen.x = 0.0f;
            }
            HullCollision2D collision;
            collision = new HullCollision2D(circle, square, penNorm.normalized, pen.magnitude);
            return(collision);
        }
        return(null);
    }
    /*
     * Circle V AABB
     */
    public static bool detectCollision(CircleHull2D circle, AABBHull2D square)
    {
        Vector2 closestPoint = square.GetClosestPoint(circle.position);

        Debug.DrawLine(new Vector3(closestPoint.x, closestPoint.y, 0), circle.position);
        if (circle.radius > Vector2.Distance(circle.position, closestPoint))
        {
            return(true);
        }
        return(false);
    }