public static PShape3D CreateMesh(ParallelMeshData parallelMeshData, Fix64Vec3 scale) { if (!initialized) { Initialize(); } IntPtr m_NativeObject = NativeParallel3D.CreateMesh(parallelMeshData.vertices, parallelMeshData.vertexCount, parallelMeshData.triangles, parallelMeshData.triangleCount, scale); return(new PShape3D(m_NativeObject)); }
void Reset() { MeshFilter meshFilter = GetComponent <MeshFilter>(); Mesh mesh = meshFilter.sharedMesh; verts = mesh.vertices; vertsCount = verts.Length; int[] triangles = mesh.triangles; int triangleCount = triangles.Length; meshData = new ParallelMeshData(); meshData.vertexCount = (UInt32)vertsCount; meshData.vertices = new Fix64Vec3[meshData.vertexCount]; meshData.triangleCount = (UInt32)(triangleCount / 3); meshData.triangles = new ParallelTriangle[meshData.triangleCount]; for (int i = 0; i < vertsCount; i++) { meshData.vertices[i] = (Fix64Vec3)verts[i]; } for (int i = 0; i < triangleCount; i++) { int vIndex = i % 3; int tIndex = i / 3; if (vIndex == 0) { meshData.triangles[tIndex].v1 = (UInt32)triangles[i]; } else if (vIndex == 1) { meshData.triangles[tIndex].v2 = (UInt32)triangles[i]; } else { meshData.triangles[tIndex].v3 = (UInt32)triangles[i]; } } }