// Static API // Rewrites data in mesh to ensure that it only contains valid particle quads. internal static void FilterMesh(Mesh mesh, WarningCallback callback) { ParticleMesh src = ParticleMesh.FromMesh(mesh); ParticleMesh dst = new ParticleMesh(); // ClassifyQuad wants at least 6 indices (2 triangles) to examine int limit = src.TriangleCount - 6; int iiVert = 0; while (iiVert < limit) { switch (src.ClassifyQuad(iiVert, callback)) { case ParticleMesh.QuadType.FullParticle: dst.AppendQuad(src, iiVert); iiVert += 6; break; case ParticleMesh.QuadType.Degenerate: iiVert += 6; break; case ParticleMesh.QuadType.LatterHalfParticle: iiVert += 3; break; case ParticleMesh.QuadType.Unknown: default: iiVert += 1; break; } } dst.CopyToMesh(mesh); }