Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package elec0.particleEngine;
- import java.util.ArrayList;
- import java.util.List;
- import org.newdawn.slick.Color;
- import org.newdawn.slick.opengl.Texture;
- import elec0.particleEngine.Particle;
- import elec0.utils.Timing;
- import elec0.utils.Vector3f;
- public class ParticleEmitter
- {
- // Privates
- private float CONST_GRAVITY = 0.005f;
- private Vector3f startPosition;
- private float particleCount;
- private Color startColor;
- private List<Particle> particleList = new ArrayList<Particle>();
- private String particleBehavior;
- //Publics
- public String textureStyle;
- public Texture particleTexture; // This is set from ParticleEngine when it
- // ParticleEmitter constructor start
- ParticleEmitter(float particleCount, Vector3f position, Color color)
- {
- this.particleCount = particleCount;
- this.startPosition = position;
- this.startColor = color;
- for(int i = 0; i < this.particleCount; ++i)
- {
- particleList.add(new Particle(startPosition, startColor));
- }
- }
- ParticleEmitter(float particleCount, Vector3f position, Color color, String textureStyle)
- {
- this.particleCount = particleCount;
- this.startPosition = position;
- this.startColor = color;
- this.textureStyle = textureStyle;
- for(int i = 0; i < this.particleCount; ++i)
- {
- particleList.add(new Particle(startPosition, startColor));
- }
- }
- ParticleEmitter(float particleCount, Vector3f position, Color color, String textureStyle, String particleBehavior)
- {
- this.particleCount = particleCount;
- startPosition = position;
- startColor = color;
- this.textureStyle = textureStyle;
- this.particleBehavior = particleBehavior;
- for(int i = 0; i < this.particleCount; ++i)
- {
- particleList.add(new Particle(startPosition, startColor, particleBehavior));
- }
- }
- // ParticleEmitter constructor end
- public void draw()
- {
- particleTexture.bind();
- for(Particle p : particleList)
- p.draw();
- }
- public void update()
- {
- List<Particle> newList = new ArrayList<Particle>();
- for(Particle p : particleList)
- {
- p.moveVector = new Vector3f(0.00001f, 0.00001f, 0.00001f);
- // p.moveVector.addToY(-CONST_GRAVITY);
- float start = startPosition.getY();
- p.position.addTo(p.moveVector);
- float end = startPosition.getY();
- if(start != end)
- System.out.println("hit");
- // Check to see if particle's dead yet
- if(Timing.getTime() > (p.birthTime + p.lifetime))
- {
- // It's dead, reset it.
- newList.add(new Particle(startPosition, startColor, p.behavior));
- }
- else
- {
- // If it's not dead, put it in the new list
- newList.add(p);
- }
- }
- particleList = newList; // So we can edit things while iterating over the list
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment