attachChild(mesh);
_particles = new Particle[numParticles];
if (numParticles == 0) {
return;
}
Vector2 sharedTextureData[];
// setup texture coords and index mode
final MeshData meshData = mesh.getMeshData();
switch (getParticleType()) {
case GeomMesh:
case Triangle:
sharedTextureData = new Vector2[] { new Vector2(2.0, 0.0), new Vector2(0.0, 2.0), new Vector2(0.0, 0.0) };
meshData.setIndexMode(IndexMode.Triangles);
break;
case Quad:
sharedTextureData = new Vector2[] { new Vector2(1.0, 0.0), new Vector2(1.0, 1.0),
new Vector2(0.0, 1.0), new Vector2(0.0, 0.0) };
meshData.setIndexMode(IndexMode.Quads);
break;
default:
throw new IllegalStateException(
"Particle Mesh may only have particle type of ParticleType.Quad, ParticleType.GeomMesh or ParticleType.Triangle");
}
final int verts = getVertsForParticleType(getParticleType());
_geometryCoordinates = BufferUtils.createVector3Buffer(numParticles * verts);
_appearanceColors = BufferUtils.createColorBuffer(numParticles * verts);
meshData.setVertexBuffer(_geometryCoordinates);
meshData.setColorBuffer(_appearanceColors);
meshData.setTextureBuffer(BufferUtils.createVector2Buffer(numParticles * verts), 0);
final Vector2 temp = Vector2.fetchTempInstance();
for (int k = 0; k < numParticles; k++) {
_particles[k] = new Particle(this);
_particles[k].init();
_particles[k].setStartIndex(k * verts);
for (int a = verts - 1; a >= 0; a--) {