I need help to transform this code, to run the jME 2, I was looking him in the forum, but not managed to transform it completely, can someone help me?
The code comes from the topic (http://www.jmonkeyengine.com/forum/index.php?topic=7622.15).
package scene;
import java.util.Properties;
import java.util.logging.Logger;
import com.jme.bounding.BoundingSphere;
import com.jme.image.Texture;
import com.jme.math.FastMath;
import com.jme.math.Ring;
import com.jme.math.Vector3f;
import com.jme.renderer.ColorRGBA;
import com.jme.renderer.Renderer;
import com.jme.scene.Node;
import com.jme.scene.state.BlendState;
import com.jme.scene.state.TextureState;
import com.jme.scene.state.ZBufferState;
import com.jme.system.DisplaySystem;
import com.jme.util.TextureManager;
import com.jmex.effects.particles.Particle;
import com.jmex.effects.particles.ParticleFactory;
import com.jmex.effects.particles.ParticleInfluence;
import com.jmex.effects.particles.ParticleMesh;
import com.jmex.effects.particles.SimpleParticleInfluenceFactory;
public class RainManager extends Node {
private static final long serialVersionUID = -1057124936652689175L;
private static Logger log =
Logger.getLogger(RainManager.class.getCanonicalName());
private ParticleMesh points;
private SimpleParticleInfluenceFactory.BasicGravity gravity;
private boolean useGravity = false;
public RainManager(Properties prop) {
super("rain");
points = ParticleFactory.buildParticles("rainPoints", 1000,
ParticleMesh.ParticleType.Quad);
applyParameters(prop);
if (useGravity) {
gravity = (SimpleParticleInfluenceFactory.BasicGravity)
SimpleParticleInfluenceFactory.createBasicGravity(new Vector3f(0, -1,
0), false);
points.getParticleController().addInfluence(gravity);
}
points.addInfluence(new BoundInfluence());
String texpath = "data/";
TextureState ts =
DisplaySystem.getDisplaySystem().getRenderer().createTextureState();
ts.setEnabled(true);
Texture t1 =
TextureManager.loadTexture(TerrainManager.class.getClassLoader().getResource(texpath
+ "/rain.dds"),
Texture.MinificationFilter.Trilinear,
Texture.MagnificationFilter.Bilinear);
ts.setTexture(t1, 1);
points.setRenderState(ts);
points.warmUp(10);
attachChild(points);
ParticleManager manager = new ParticleManager(200);
manager.setGravityForce(new Vector3f(0.0f, -0.0020f, 0.0f));
manager.setEmissionDirection(new Vector3f(0.0f, -1.0f, 0.0f));
manager.setEmissionMaximumAngle(0.1f * FastMath.PI);
manager.setEmissionMinimumAngle(0.0f);
manager.setSpeed(0.3f);
manager.setParticlesMinimumLifeTime(100.0f);
manager.setStartSize(1.5f);
manager.setEndSize(1.5f);
manager.setStartColor(new ColorRGBA(0.3f, 0.3f, 0.6f, 0.8f));
manager.setEndColor(new ColorRGBA(0.3f, 0.3f, 0.6f, 0.8f));
manager.setRandomMod(1.0f);
manager.setControlFlow(false);
manager.setReleaseRate(400);
manager.setReleaseVariance(0.5f);
manager.setInitialVelocity(0.58f);
manager.setParticleSpinSpeed(0.0f);
manager.warmUp(1000);
manager.getParticles().addController(manager);
BlendState bs =
DisplaySystem.getDisplaySystem().getRenderer().createBlendState();
bs.setBlendEnabled(true);
bs.setSourceFunction(BlendState.SourceFunction.SourceAlpha);
bs.setDestinationFunction(BlendState.DestinationFunction.OneMinusSourceAlpha);
bs.setTestEnabled(true);
bs.setTestFunction(BlendState.TestFunction.GreaterThan);
bs.setEnabled(true);
points.setRenderState(bs);
points.setRenderQueueMode(Renderer.QUEUE_TRANSPARENT);
points.setModelBound(new BoundingSphere());
points.updateModelBound();
points.setIsCollidable(false);
ZBufferState zstate =
DisplaySystem.getDisplaySystem().getRenderer().createZBufferState();
zstate.setEnabled(false);
setIsCollidable(false);
updateRenderState();
}
public void applyParameters(Properties prop) {
points.setGeometry(new Ring(new Vector3f(0, 0, 0), new
Vector3f(0, 1, 0), 100,
Float.parseFloat(prop.getProperty("radius", "1000"))));
points.setNumParticles(Integer.parseInt(prop.getProperty("particles",
"1000")));
points.setEmissionDirection(new Vector3f(0, -1, 0));
points.setOriginOffset(new Vector3f(0, 0, 0));
points.setInitialVelocity(Float.parseFloat(prop.getProperty("velocity",
"0.75f")));
points.setParticleMass(Float.parseFloat(prop.getProperty("mass",
"0.5f")));
points.setStartSize(Float.parseFloat(prop.getProperty("startSize",
"3")));
points.setEndSize(Float.parseFloat(prop.getProperty("endSize", "3")));
points.setMinimumLifeTime(Float.parseFloat(prop.getProperty("minLifeTime",
"3500")));
points.setMaximumLifeTime(Float.parseFloat(prop.getProperty("maxLifeTime",
"5000")));
points.setStartColor(parseColor(prop.getProperty("startColor",
"0.6, 0.6, 0.6, 1")));
points.setEndColor(parseColor(prop.getProperty("endColor",
"0.6, 0.6, 0.6, 1")));
points.setMaximumAngle(Float.parseFloat(prop.getProperty("maxAngle",
"5f")) * FastMath.DEG_TO_RAD);
points.getParticleController().setControlFlow(false);
//points.setLightCombineMode(LightState.);
if (gravity != null) {
gravity.setGravityForce(new Vector3f(0,
Float.parseFloat(prop.getProperty("gravity", "-1")), 0));
}
points.updateRenderState();
}
private ColorRGBA parseColor(String s) {
ColorRGBA color = new ColorRGBA(ColorRGBA.white);
try {
float r = 1;
float g = 1;
float b = 1;
float a = 1;
String[] p = s.split(",\s+");
r = Float.parseFloat(p[0]);
if (p.length > 1) {
g = Float.parseFloat(p[1]);
}
if (p.length > 2) {
b = Float.parseFloat(p[2]);
}
if (p.length > 3) {
a = Float.parseFloat(p[3]);
}
color.set(r, g, b, a);
} catch (Exception ex) {
log.warning("unparsable color: " + s + " (" + ex.toString() + ")");
}
return color;
}
class BoundInfluence extends ParticleInfluence {
public void apply(float dt, Particle particle, int index) {
// if (Environment.getInstance().collides(particle.getPosition()))
// particle.setStatus(Particle.DEAD);
}
}
}