test case showing soft particle issues, they end up quite hard...

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10533 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
bre..om 12 years ago
parent e7aa7eb627
commit 0ffe547d5a
  1. 64
      engine/src/test/jme3test/effect/TestSoftParticles.java

@ -36,8 +36,10 @@ import com.jme3.effect.ParticleEmitter;
import com.jme3.effect.ParticleMesh;
import com.jme3.effect.shapes.EmitterSphereShape;
import com.jme3.input.KeyInput;
import com.jme3.input.MouseInput;
import com.jme3.input.controls.ActionListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.input.controls.MouseButtonTrigger;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Quaternion;
@ -45,6 +47,7 @@ import com.jme3.math.Vector3f;
import com.jme3.post.FilterPostProcessor;
import com.jme3.post.filters.TranslucentBucketFilter;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.shape.Box;
/**
@ -56,6 +59,7 @@ public class TestSoftParticles extends SimpleApplication {
private boolean softParticles = true;
private FilterPostProcessor fpp;
private TranslucentBucketFilter tbf;
private Node particleNode;
public static void main(String[] args) {
TestSoftParticles app = new TestSoftParticles();
@ -93,13 +97,48 @@ public class TestSoftParticles extends SimpleApplication {
fpp.addFilter(tbf);
viewPort.addProcessor(fpp);
particleNode = new Node("particleNode");
rootNode.attachChild(particleNode);
createParticles();
inputManager.addListener(new ActionListener() {
public void onAction(String name, boolean isPressed, float tpf) {
if(isPressed && name.equals("toggle")){
// tbf.setEnabled(!tbf.isEnabled());
softParticles = !softParticles;
if(softParticles){
viewPort.addProcessor(fpp);
}else{
viewPort.removeProcessor(fpp);
}
}
}
}, "toggle");
inputManager.addMapping("toggle", new KeyTrigger(KeyInput.KEY_SPACE));
// emit again
inputManager.addListener(new ActionListener() {
public void onAction(String name, boolean isPressed, float tpf) {
if(isPressed && name.equals("refire")) {
//fpp.removeFilter(tbf); // <-- add back in to fix
particleNode.detachAllChildren();
createParticles();
//fpp.addFilter(tbf);
}
}
}, "refire");
inputManager.addMapping("refire", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
}
private void createParticles() {
Material material = new Material(assetManager, "Common/MatDefs/Misc/Particle.j3md");
material.setTexture("Texture", assetManager.loadTexture("Effects/Explosion/flame.png"));
material.setFloat("Softness", 3f); //
//Fire
ParticleEmitter fire = new ParticleEmitter("Fire", ParticleMesh.Type.Triangle, 30);
fire.setMaterial(material);
@ -115,7 +154,7 @@ public class TestSoftParticles extends SimpleApplication {
fire.setHighLife(3f);
fire.setLocalTranslation(0, 0.2f, 0);
rootNode.attachChild(fire);
particleNode.attachChild(fire);
ParticleEmitter smoke = new ParticleEmitter("Smoke", ParticleMesh.Type.Triangle, 30);
@ -133,24 +172,7 @@ public class TestSoftParticles extends SimpleApplication {
smoke.setLocalTranslation(0, 0.1f, 0);
smoke.emitAllParticles();
rootNode.attachChild(smoke);
inputManager.addListener(new ActionListener() {
public void onAction(String name, boolean isPressed, float tpf) {
if(isPressed && name.equals("toggle")){
// tbf.setEnabled(!tbf.isEnabled());
softParticles = !softParticles;
if(softParticles){
viewPort.addProcessor(fpp);
}else{
viewPort.removeProcessor(fpp);
}
}
}
}, "toggle");
inputManager.addMapping("toggle", new KeyTrigger(KeyInput.KEY_SPACE));
particleNode.attachChild(smoke);
}

Loading…
Cancel
Save