using System; using System.Collections.Generic; using UnityEngine; namespace Parabox.CSG { // Token: 0x02000016 RID: 22 internal class CSG_Model { // Token: 0x060000A6 RID: 166 RVA: 0x0000D479 File Offset: 0x0000B879 public CSG_Model() { this.vertices = new List(); this.indices = new List(); } // Token: 0x060000A7 RID: 167 RVA: 0x0000D498 File Offset: 0x0000B898 public CSG_Model(GameObject go) { this.vertices = new List(); Mesh sharedMesh = go.GetComponent().sharedMesh; Transform component = go.GetComponent(); Vector3[] array = sharedMesh.vertices; Vector3[] normals = sharedMesh.normals; Vector2[] uv = sharedMesh.uv; Color[] colors = sharedMesh.colors; for (int i = 0; i < array.Length; i++) { this.vertices.Add(new CSG_Vertex(component.TransformPoint(array[i]), component.TransformDirection(normals[i]), uv[i], colors[i])); } this.indices = new List(sharedMesh.triangles); } // Token: 0x060000A8 RID: 168 RVA: 0x0000D564 File Offset: 0x0000B964 public CSG_Model(List list) { this.vertices = new List(); this.indices = new List(); int num = 0; for (int i = 0; i < list.Count; i++) { CSG_Polygon csg_Polygon = list[i]; for (int j = 2; j < csg_Polygon.vertices.Count; j++) { this.vertices.Add(csg_Polygon.vertices[0]); this.indices.Add(num++); this.vertices.Add(csg_Polygon.vertices[j - 1]); this.indices.Add(num++); this.vertices.Add(csg_Polygon.vertices[j]); this.indices.Add(num++); } } } // Token: 0x060000A9 RID: 169 RVA: 0x0000D644 File Offset: 0x0000BA44 public List ToPolygons() { List list = new List(); for (int i = 0; i < this.indices.Count; i += 3) { List list2 = new List { this.vertices[this.indices[i]], this.vertices[this.indices[i + 1]], this.vertices[this.indices[i + 2]] }; list.Add(new CSG_Polygon(list2)); } return list; } // Token: 0x060000AA RID: 170 RVA: 0x0000D6E4 File Offset: 0x0000BAE4 public Mesh ToMesh() { Mesh mesh = new Mesh(); int count = this.vertices.Count; Vector3[] array = new Vector3[count]; Vector3[] array2 = new Vector3[count]; Vector2[] array3 = new Vector2[count]; Color[] array4 = new Color[count]; for (int i = 0; i < count; i++) { array[i] = this.vertices[i].position; array2[i] = this.vertices[i].normal; array3[i] = this.vertices[i].uv; array4[i] = this.vertices[i].color; } mesh.vertices = array; mesh.normals = array2; mesh.colors = array4; mesh.uv = array3; mesh.triangles = this.indices.ToArray(); return mesh; } // Token: 0x04000030 RID: 48 public List vertices; // Token: 0x04000031 RID: 49 public List indices; } }