using System; using System.Collections.Generic; using UnityEngine; namespace ProBuilder2.Common { // Token: 0x02000049 RID: 73 public class pb_Bounds2D { // Token: 0x06000232 RID: 562 RVA: 0x0001DF85 File Offset: 0x0001C385 public pb_Bounds2D() { } // Token: 0x06000233 RID: 563 RVA: 0x0001DFAE File Offset: 0x0001C3AE public pb_Bounds2D(Vector2 center, Vector2 size) { this.center = center; this.size = size; } // Token: 0x06000234 RID: 564 RVA: 0x0001DFE5 File Offset: 0x0001C3E5 public pb_Bounds2D(Vector2[] points) { this.SetWithPoints(points); } // Token: 0x06000235 RID: 565 RVA: 0x0001E015 File Offset: 0x0001C415 public pb_Bounds2D(Vector2[] points, int[] indices) { this.SetWithPoints(points, indices); } // Token: 0x06000236 RID: 566 RVA: 0x0001E048 File Offset: 0x0001C448 public pb_Bounds2D(Vector2[] points, pb_Edge[] edges) { float num = 0f; float num2 = 0f; float num3 = 0f; float num4 = 0f; if (points.Length > 0 && edges.Length > 0) { num = points[edges[0].x].x; num3 = points[edges[0].x].y; num2 = num; num4 = num3; for (int i = 0; i < edges.Length; i++) { num = Mathf.Min(num, points[edges[i].x].x); num = Mathf.Min(num, points[edges[i].y].x); num3 = Mathf.Min(num3, points[edges[i].x].y); num3 = Mathf.Min(num3, points[edges[i].y].y); num2 = Mathf.Max(num2, points[edges[i].x].x); num2 = Mathf.Max(num2, points[edges[i].y].x); num4 = Mathf.Max(num4, points[edges[i].x].y); num4 = Mathf.Max(num4, points[edges[i].y].y); } } this.center = new Vector2((num + num2) / 2f, (num3 + num4) / 2f); this.size = new Vector3(num2 - num, num4 - num3); } // Token: 0x06000237 RID: 567 RVA: 0x0001E1F8 File Offset: 0x0001C5F8 public pb_Bounds2D(Vector2[] points, int length) { float num = 0f; float num2 = 0f; float num3 = 0f; float num4 = 0f; if (points.Length > 0) { num = points[0].x; num3 = points[0].y; num2 = num; num4 = num3; for (int i = 1; i < length; i++) { num = Mathf.Min(num, points[i].x); num3 = Mathf.Min(num3, points[i].y); num2 = Mathf.Max(num2, points[i].x); num4 = Mathf.Max(num4, points[i].y); } } this.center = new Vector2((num + num2) / 2f, (num3 + num4) / 2f); this.size = new Vector3(num2 - num, num4 - num3); } // Token: 0x17000036 RID: 54 // (get) Token: 0x06000238 RID: 568 RVA: 0x0001E304 File Offset: 0x0001C704 // (set) Token: 0x06000239 RID: 569 RVA: 0x0001E30C File Offset: 0x0001C70C public Vector2 size { get { return this._size; } set { this._size = value; this._extents.x = this._size.x * 0.5f; this._extents.y = this._size.y * 0.5f; } } // Token: 0x17000037 RID: 55 // (get) Token: 0x0600023A RID: 570 RVA: 0x0001E358 File Offset: 0x0001C758 public Vector2 extents { get { return this._extents; } } // Token: 0x17000038 RID: 56 // (get) Token: 0x0600023B RID: 571 RVA: 0x0001E360 File Offset: 0x0001C760 public Vector2[] corners { get { return new Vector2[] { new Vector2(this.center.x - this.extents.x, this.center.y + this.extents.y), new Vector2(this.center.x + this.extents.x, this.center.y + this.extents.y), new Vector2(this.center.x - this.extents.x, this.center.y - this.extents.y), new Vector2(this.center.x + this.extents.x, this.center.y - this.extents.y) }; } } // Token: 0x0600023C RID: 572 RVA: 0x0001E48C File Offset: 0x0001C88C public bool ContainsPoint(Vector2 point) { return point.x <= this.center.x + this.extents.x && point.x >= this.center.x - this.extents.x && point.y <= this.center.y + this.extents.y && point.y >= this.center.y - this.extents.y; } // Token: 0x0600023D RID: 573 RVA: 0x0001E534 File Offset: 0x0001C934 public bool IntersectsLineSegment(Vector2 lineStart, Vector2 lineEnd) { if (this.ContainsPoint(lineStart) || this.ContainsPoint(lineEnd)) { return true; } Vector2[] corners = this.corners; return pb_Math.GetLineSegmentIntersect(corners[0], corners[1], lineStart, lineEnd) || pb_Math.GetLineSegmentIntersect(corners[1], corners[3], lineStart, lineEnd) || pb_Math.GetLineSegmentIntersect(corners[3], corners[2], lineStart, lineEnd) || pb_Math.GetLineSegmentIntersect(corners[2], corners[0], lineStart, lineEnd); } // Token: 0x0600023E RID: 574 RVA: 0x0001E5F0 File Offset: 0x0001C9F0 public bool Intersects(pb_Bounds2D bounds) { Vector2 vector = this.center - bounds.center; Vector2 vector2 = this.size + bounds.size; return Mathf.Abs(vector.x) * 2f < vector2.x && Mathf.Abs(vector.y) * 2f < vector2.y; } // Token: 0x0600023F RID: 575 RVA: 0x0001E660 File Offset: 0x0001CA60 public bool Intersects(Rect rect) { Vector2 vector = this.center - rect.center; Vector2 vector2 = this.size + rect.size; return Mathf.Abs(vector.x) * 2f < vector2.x && Mathf.Abs(vector.y) * 2f < vector2.y; } // Token: 0x06000240 RID: 576 RVA: 0x0001E6D0 File Offset: 0x0001CAD0 public void SetWithPoints(IList points) { float num = 0f; float num2 = 0f; float num3 = 0f; float num4 = 0f; int count = points.Count; if (count > 0) { num = points[0].x; num3 = points[0].y; num2 = num; num4 = num3; for (int i = 1; i < count; i++) { float x = points[i].x; float y = points[i].y; if (x < num) { num = x; } if (x > num2) { num2 = x; } if (y < num3) { num3 = y; } if (y > num4) { num4 = y; } } } this.center.x = (num + num2) / 2f; this.center.y = (num3 + num4) / 2f; this._size.x = num2 - num; this._size.y = num4 - num3; this._extents.x = this._size.x * 0.5f; this._extents.y = this._size.y * 0.5f; } // Token: 0x06000241 RID: 577 RVA: 0x0001E810 File Offset: 0x0001CC10 public void SetWithPoints(IList points, IList indices) { float num = 0f; float num2 = 0f; float num3 = 0f; float num4 = 0f; if (points.Count > 0 && indices.Count > 0) { num = points[indices[0]].x; num3 = points[indices[0]].y; num2 = num; num4 = num3; for (int i = 1; i < indices.Count; i++) { float x = points[indices[i]].x; float y = points[indices[i]].y; if (x < num) { num = x; } if (x > num2) { num2 = x; } if (y < num3) { num3 = y; } if (y > num4) { num4 = y; } } } this.center.x = (num + num2) / 2f; this.center.y = (num3 + num4) / 2f; this._size.x = num2 - num; this._size.y = num4 - num3; this._extents.x = this._size.x * 0.5f; this._extents.y = this._size.y * 0.5f; } // Token: 0x06000242 RID: 578 RVA: 0x0001E974 File Offset: 0x0001CD74 public static Vector2 Center(Vector2[] points, int length = -1) { int num = ((length >= 1) ? length : points.Length); float num2 = points[0].x; float num3 = points[0].y; float num4 = num2; float num5 = num3; for (int i = 1; i < num; i++) { float x = points[i].x; float y = points[i].y; if (x < num2) { num2 = x; } if (x > num4) { num4 = x; } if (y < num3) { num3 = y; } if (y > num5) { num5 = y; } } return new Vector2((num2 + num4) / 2f, (num3 + num5) / 2f); } // Token: 0x06000243 RID: 579 RVA: 0x0001EA44 File Offset: 0x0001CE44 public static Vector2 Center(Vector2[] points, int[] indices) { int num = indices.Length; float num2 = points[indices[0]].x; float num3 = points[indices[0]].y; float num4 = num2; float num5 = num3; for (int i = 1; i < num; i++) { float x = points[indices[i]].x; float y = points[indices[i]].y; if (x < num2) { num2 = x; } if (x > num4) { num4 = x; } if (y < num3) { num3 = y; } if (y > num5) { num5 = y; } } return new Vector2((num2 + num4) / 2f, (num3 + num5) / 2f); } // Token: 0x06000244 RID: 580 RVA: 0x0001EB0C File Offset: 0x0001CF0C public override string ToString() { return string.Concat(new object[] { "[cen: ", this.center, " size: ", this.size, "]" }); } // Token: 0x040001A8 RID: 424 public Vector2 center = Vector2.zero; // Token: 0x040001A9 RID: 425 [SerializeField] private Vector2 _size = Vector2.zero; // Token: 0x040001AA RID: 426 [SerializeField] private Vector2 _extents = Vector2.zero; } }