public void AddSubMesh(Vector3[] verts) { Bounds aabb = new Bounds(); aabb.center = GlobalMethods.AverageVector(verts); foreach (Vector3 v in verts) { aabb.Encapsulate(v); } #if UNITY_EDITOR if (debug != DEBUG_LEVEL.None) { Debug.Log("The AABB center is: " + aabb.center + ", the extents are: " + aabb.extents); } #endif subTris.Add(new List <int>()); mesh.subMeshCount++; List <int> tris = new List <int>(); for (int i = 0; i < mesh.triangles.Length; i += 3) { #if UNITY_EDITOR if (debug == DEBUG_LEVEL.Advanced) { Debug.Log(("Testing AABB against these three points: " + transform.TransformPoint(mesh.vertices[mesh.triangles[i]]) + ", " + transform.TransformPoint(mesh.vertices[mesh.triangles[i + 1]]) + ", " + transform.TransformPoint(mesh.vertices[mesh.triangles[i + 2]]))); } #endif if (aabb.Contains(transform.TransformPoint(mesh.vertices[mesh.triangles[i]])) || aabb.Contains(transform.TransformPoint(mesh.vertices[mesh.triangles[i + 1]])) || aabb.Contains(transform.TransformPoint(mesh.vertices[mesh.triangles[i + 2]]))) { #if UNITY_EDITOR if (debug == DEBUG_LEVEL.Advanced) { Debug.Log("AABB Test returned true! Adding triangle."); } #endif tris.Add(mesh.triangles[i]); tris.Add(mesh.triangles[i + 1]); tris.Add(mesh.triangles[i + 2]); subTris[subTris.Count - 1].Add(mesh.triangles[i]); subTris[subTris.Count - 1].Add(mesh.triangles[i + 1]); subTris[subTris.Count - 1].Add(mesh.triangles[i + 2]); } } mesh.SetTriangles(tris.ToArray(), mesh.subMeshCount - 1); SetMainMeshTris(true); }