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; }
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); }
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); }
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); }
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); }
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); }
public Frame(RectTransform rect, Image img) { bounds = TpToRect(rect); frameImage = img; }
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); }
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)); } }
public bool RectCircleIntersect(Define.RectF rect) { return(true); }
public void SetRect(Define.RectF r) { rect = r; }
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)); }
public FrameObject(RectTransform rect, Image img) { bounds = TpToRect(rect); image = img; }