public void InternalProcessAllTriangles(ITriangleIndexCallback callback, Vector3 aabbMin, Vector3 aabbMax) { int numtotalphysicsverts = 0; int numtriangles, gfxindex; int part, graphicssubparts = SubPartsCount(); Vector3[] triangle = new Vector3[3]; List<Vector3> verts; List<int> indicies; Vector3 meshScaling = Scaling; //if the number of parts is big, the performance might drop due to the innerloop switch on indextype for (part = 0; part < graphicssubparts; part++) { GetLockedReadOnlyVertexIndexBase(out verts, out indicies, out numtriangles, part); numtotalphysicsverts += numtriangles * 3; //upper bound for (gfxindex = 0; gfxindex < numtriangles; gfxindex++) { triangle[0] = verts[indicies[gfxindex * 3 + 0]]; triangle[1] = verts[indicies[gfxindex * 3 + 1]]; triangle[2] = verts[indicies[gfxindex * 3 + 2]]; callback.ProcessTriangleIndex(triangle, part, gfxindex); } UnLockReadOnlyVertexBase(part); } }
public void InternalProcessAllTriangles(ITriangleIndexCallback callback, Vector3 aabbMin, Vector3 aabbMax) { int numtotalphysicsverts = 0; int numtriangles, gfxindex; int part, graphicssubparts = SubPartsCount(); Vector3[] triangle = new Vector3[3]; List <Vector3> verts; List <int> indicies; Vector3 meshScaling = Scaling; //if the number of parts is big, the performance might drop due to the innerloop switch on indextype for (part = 0; part < graphicssubparts; part++) { GetLockedReadOnlyVertexIndexBase(out verts, out indicies, out numtriangles, part); numtotalphysicsverts += numtriangles * 3; //upper bound for (gfxindex = 0; gfxindex < numtriangles; gfxindex++) { triangle[0] = verts[indicies[gfxindex * 3 + 0]]; triangle[1] = verts[indicies[gfxindex * 3 + 1]]; triangle[2] = verts[indicies[gfxindex * 3 + 2]]; callback.ProcessTriangleIndex(triangle, part, gfxindex); } UnLockReadOnlyVertexBase(part); } }