Files
2026-06-04 11:42:34 +02:00

333 lines
8.4 KiB
C#

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<Vector2> 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<Vector2> points, IList<int> 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;
}
}