_particles = new Particle[numParticles];
if (_particleMesh != null) {
detachChild(_particleMesh);
}
final Line line = new Line(getName() + "_lines") {
@Override
public void updateWorldTransform(final boolean recurse) {
; // Do nothing.
}
@Override
public void updateWorldBound(final boolean recurse) {
super.updateWorldTransform(recurse);
super.updateWorldBound(recurse);
}
};
_particleMesh = line;
attachChild(line);
line.getMeshData().setVertexBuffer(_geometryCoordinates);
line.getMeshData().setColorBuffer(_appearanceColors);
line.getMeshData().setTextureBuffer(BufferUtils.createVector2Buffer(numParticles * 2), 0);
getSceneHints().setRenderBucketType(RenderBucketType.Opaque);
getSceneHints().setLightCombineMode(LightCombineMode.Off);
getSceneHints().setTextureCombineMode(TextureCombineMode.Replace);
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--) {
final int ind = (k * verts) + a;
BufferUtils.setInBuffer(sharedTextureData[a], line.getMeshData().getTextureCoords(0).getBuffer(), ind);
BufferUtils.setInBuffer(_particles[k].getCurrentColor(), _appearanceColors, (ind));
}
}
updateWorldRenderStates(true);