public void RectToPlace(RectTransform rectTp, ref Define.RectF rect)
 {
     rect.min.x = (rectTp.anchoredPosition.x - rectTp.sizeDelta.x * .5f);
     rect.min.y = (rectTp.anchoredPosition.y - rectTp.sizeDelta.y * .5f);
     rect.max.x = (rectTp.anchoredPosition.x + rectTp.sizeDelta.x * .5f);
     rect.max.y = (rectTp.anchoredPosition.y + rectTp.sizeDelta.y * .5f);
 }
        public TouchPlaceInfo(string n, Define.RectF p)
        {
            name  = n;
            place = p;

            touch = null;
        }
Beispiel #3
0
    public static bool IntersectRectCircle(Define.RectF circleBound, Define.RectF rectBound, Define.RectF rect)
    {
        int zone = GetRectZone(circleBound.min, rectBound);

        if (zone == 1)
        {
            return(rectBound.min.y - circleBound.max.x <= circleBound.min.y);
        }
        else if (zone == 3)
        {
            return(rectBound.min.x - circleBound.max.x <= circleBound.min.x);
        }
        else if (zone == 4)
        {
            return(true);
        }
        else if (zone == 5)
        {
            return(rectBound.max.x + circleBound.max.x >= circleBound.min.x);
        }
        else if (zone == 7)
        {
            return(rectBound.max.y + circleBound.max.x >= circleBound.min.y);
        }
        else
        {
            Vector2 vec = new Vector2(zone == 0 || zone == 6 ? rectBound.min.x : rectBound.max.x,
                                      zone == 0 || zone == 2 ? rectBound.min.y : rectBound.max.y);

            return(PointInCircle(vec, circleBound.min, circleBound.max.x));
        }
    }
    public void ObjectSync(Define.RectF rect, RectTransform rectTp)
    {
        float xDist = rect.max.x - rect.min.x;
        float yDist = rect.max.y - rect.min.y;

        rectTp.anchoredPosition = new Vector2(rect.min.x + xDist / 2f, rect.min.y + yDist / 2f);
        rectTp.sizeDelta        = new Vector2(xDist, yDist);
    }
Beispiel #5
0
    public static int GetRectZone(Vector2 circlePos, Vector2 rectPos, Define.RectF rect)
    {
        int xZone = (circlePos.x < rect.min.x + rectPos.x) ? 0 : (circlePos.x > rect.max.x + rectPos.x) ? 2 : 1;
        int yZone = (circlePos.y < rect.min.y + rectPos.y) ? 0 : (circlePos.y > rect.max.y + rectPos.y) ? 2 : 1;
        int nZone = xZone + 3 * yZone;

        return(nZone);
    }
Beispiel #6
0
    public static Define.RectF RectTransformNormalToRect(RectTransform rectTp, Define.RectF rect)
    {
        rect.min.x = (rectTp.position.x - rectTp.sizeDelta.x * .5f);
        rect.min.y = (rectTp.position.y - rectTp.sizeDelta.y * .5f);
        rect.max.x = (rectTp.position.x + rectTp.sizeDelta.x * .5f);
        rect.max.y = (rectTp.position.y + rectTp.sizeDelta.y * .5f);

        return(rect);
    }
Beispiel #7
0
    public static bool IntersectCircle(Define.RectF rect1, Define.RectF rect2)     //min = position max.x = radius
    {
        float dist = rect1.max.x + rect2.max.x;

        if (Vector2.Distance(rect1.min, rect2.min) <= dist)
        {
            return(true);
        }

        return(false);
    }
Beispiel #8
0
    public static bool IntersectRect(Define.RectF rect1, Define.RectF rect2)
    {
        if (rect1.min.x < rect2.max.x &&
            rect1.max.y < rect2.min.y &&
            rect1.max.x > rect2.min.x &&
            rect1.min.y > rect2.max.y)
        {
            return(true);
        }

        return(false);
    }
Beispiel #9
0
 public Frame(RectTransform rect, Image img)
 {
     bounds     = TpToRect(rect);
     frameImage = img;
 }
Beispiel #10
0
 public static bool PointInRect(Vector2 point, Vector2 rectPos, Define.RectF rect)
 {
     return(point.x >= rectPos.x + rect.min.x && point.x <= rectPos.x + rect.max.x &&
            point.y >= rectPos.y + rect.min.y && point.y <= rectPos.y + rect.max.y);
 }
Beispiel #11
0
    public static bool IntersectRectCircle(Vector2 circlePos, Vector2 rectPos, float radius, Define.RectF rect)
    {
        int zone = GetRectZone(circlePos, rectPos, rect);

        // if(PointInRect(circlePos,rectPos,rect))
        // {
        //  Debug.Log(zone);
        //  return true;
        // }

        if (zone == 1)
        {
            return(rect.min.y - radius + rectPos.y <= circlePos.y);
        }
        else if (zone == 3)
        {
            return(rect.min.x - radius + rectPos.x <= circlePos.x);
        }
        else if (zone == 4)
        {
            return(true);
        }
        else if (zone == 5)
        {
            return(rect.max.x + radius + rectPos.x >= circlePos.x);
        }
        else if (zone == 7)
        {
            return(rect.max.y + radius + rectPos.y >= circlePos.y);
        }
        else
        {
            Vector2 vec = new Vector2(zone == 0 || zone == 6 ? rect.min.x : rect.max.x,
                                      zone == 0 || zone == 2 ? rect.min.y : rect.max.y);

            return(PointInCircle(vec, circlePos, radius));
        }
    }
Beispiel #12
0
 public bool RectCircleIntersect(Define.RectF rect)
 {
     return(true);
 }
 public void SetRect(Define.RectF r)
 {
     rect = r;
 }
Beispiel #14
0
 public void SetCollider(Define.RectF rect, Vector2 offs)
 {
     bound  = rect;
     offset = offs;
 }
 public void ValueSync(ref Define.RectF rect, Define.RectF tg)
 {
     rect.min = tg.min;
     rect.max = tg.max;
 }
 public Vector2 PlaceToSize(Define.RectF rect)
 {
     return(new Vector2((rect.max.x - rect.min.x), (rect.max.y - rect.min.y)));
 }
 public Vector2 PlaceToPosition(Define.RectF rect)
 {
     return(new Vector2(rect.min.x + (rect.max.x - rect.min.x) * .5f, rect.min.y + (rect.max.y - rect.min.y) * .5f));
 }
Beispiel #18
0
 public FrameObject(RectTransform rect, Image img)
 {
     bounds = TpToRect(rect);
     image  = img;
 }