BufferOverflowException after calling setNumParticles() on a Particle Emitter

I have an emitter, and in my update loop I try to increase the number of particles for the emitter if I determine I need more.



Like so:

[java]Particle[] particles = emitter.getParticles();



if (numParticlesNeeded > particles.length)

{

emitter.setNumParticles(numParticlesNeeded);

particles = emitter.getParticles();

}[/java]



However, I receive this error later in the rendering. Something to do with vertex buffers maybe:



[java]Apr 11, 2011 10:11:19 PM com.jme3.app.Application handleError

SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]

java.nio.BufferOverflowException

at java.nio.Buffer.nextPutIndex(Buffer.java:495)

at java.nio.DirectFloatBufferU.put(DirectFloatBufferU.java:250)

at com.jme3.effect.ParticlePointMesh.updateParticleData(ParticlePointMesh.java:113)

at com.jme3.effect.ParticleEmitter.render(ParticleEmitter.java:732)

at com.jme3.scene.Spatial.runControlRender(Spatial.java:523)

at com.jme3.renderer.RenderManager.renderScene(RenderManager.java:516)

at com.jme3.renderer.RenderManager.renderScene(RenderManager.java:522)

at com.jme3.renderer.RenderManager.renderScene(RenderManager.java:522)

at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:712)

at com.jme3.renderer.RenderManager.render(RenderManager.java:739)

at com.jme3.app.SimpleApplication.update(SimpleApplication.java:249)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:158)

at com.jme3.system.lwjgl.LwjglCanvas.runLoop(LwjglCanvas.java:225)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:221)

at java.lang.Thread.run(Thread.java:662)[/java]



My current work around is to just create a new emitter instead of updating the old one

D’oh! Sorry, didn’t realize I was in the SpiderMonkey forums!



If someone would be so kind and move this to the correct forum, it would help bury some of my shame