@author normenhansen
*/
public class Main extends SimpleApplication {
public static void main(String[] args) {
Main app = new Main();
app.start();
}
Mesh SpriteMesh = new Mesh();
Material PlasmaDefaultMaterial;
ArrayList<Geometry> Projectiles = new ArrayList<Geometry>();
float ShootTimer = 0;
float ShootDelay = 0.085714f;
@Override
public void simpleInitApp() {
flyCam.setMoveSpeed(16f);
float halfbsize = 0.5f;
int [] indexes = { 2,0,1, 1,3,2 };
Vector3f [] vertices = new Vector3f[4];
vertices[0] = new Vector3f(-halfbsize, -halfbsize, +halfbsize);
vertices[1] = new Vector3f(+halfbsize, -halfbsize, +halfbsize);
vertices[2] = new Vector3f(-halfbsize, +halfbsize, +halfbsize);
vertices[3] = new Vector3f(+halfbsize, +halfbsize, +halfbsize);
Vector2f[] texCoord = new Vector2f[4];
texCoord[0] = new Vector2f(0,0);
texCoord[1] = new Vector2f(1,0);
texCoord[2] = new Vector2f(0,1);
texCoord[3] = new Vector2f(1,1);
SpriteMesh.setBuffer(Type.Position, 3, BufferUtils.createFloatBuffer(vertices));
SpriteMesh.setBuffer(Type.TexCoord, 2, BufferUtils.createFloatBuffer(texCoord));
SpriteMesh.setBuffer(Type.Index, 3, BufferUtils.createIntBuffer(indexes));
SpriteMesh.setStatic();
SpriteMesh.updateBound();
PlasmaDefaultMaterial = new Material(getAssetManager(), "Common/MatDefs/Misc/Particle.j3md");
PlasmaDefaultMaterial.setTexture("Texture", getAssetManager().loadTexture("Textures/plasmaball.png"));
PlasmaDefaultMaterial.setTexture("GlowMap", getAssetManager().loadTexture("Textures/plasmaball.png"));
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
CartoonEdgeFilter toon=new CartoonEdgeFilter();
toon.setEdgeColor(ColorRGBA.Black);
fpp.addFilter(toon);
// Radius, intensity, scale, bias
//SSAOFilter ssaoFilter = new SSAOFilter(12.94f, 13.92f, 0.33f, 0.61f);
FXAAFilter AA = new FXAAFilter();
fpp.addFilter(AA);
SSAOFilter ssaoFilter = new SSAOFilter(1.25f, 4.0f, 1.0f, 0.33f);
fpp.addFilter(ssaoFilter);
BloomFilter bloom = new BloomFilter(BloomFilter.GlowMode.SceneAndObjects);
bloom.setBlurScale(1.0f); // Default: 1.5f
bloom.setExposurePower(5f); // Default: 5f
bloom.setExposureCutOff(0.0f); // Default: 0f
bloom.setBloomIntensity(1f); // Default 2f
//bloom.setDownSamplingFactor(1.0f);
fpp.addFilter(bloom);
FogFilter fog;
fog=new FogFilter();
fog.setFogColor(new ColorRGBA(0.0f, 0.0f, 0.0f, 1.0f));
fog.setFogDistance(500); // 500
fog.setFogDensity(8); // 16
//fpp.addFilter(fog);
viewPort.addProcessor(fpp);
}
public void ShootNewProjectile()
{
Geometry newProj = new Geometry(“derp”, SpriteMesh);
newProj.setMaterial(PlasmaDefaultMaterial);
newProj.setQueueBucket(RenderQueue.Bucket.Transparent);
BillboardControl BC = new BillboardControl();
newProj.addControl(BC);
newProj.setLocalScale(0.6f);
Projectiles.add(newProj);
rootNode.attachChild(newProj);
}
@Override
public void simpleUpdate(float tpf) {
ShootTimer -= tpf;
if(ShootTimer <= 0)
{
ShootTimer = ShootDelay;
ShootNewProjectile();
}
ArrayList<Geometry> UpdateProjectiles = (ArrayList<Geometry>)Projectiles.clone();
while(!UpdateProjectiles.isEmpty())
{
Geometry Pick = UpdateProjectiles.get(0);
Pick.move(0, 0, -7.5f*tpf);
if(Pick.getLocalTranslation().z < -10f)
{
Projectiles.remove(Pick);
rootNode.detachChild(Pick);
}
UpdateProjectiles.remove(0);
}
}
@Override
public void simpleRender(RenderManager rm) {
//TODO: add render code
}
}
[/java]