Android Open Source - X3n0break Particle System






From Project

Back to project page X3n0break.

License

The source code is released under:

GNU General Public License

If you think the Android project X3n0break listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.x3n0m0rph59.breakout;
/*from w  w  w .jav a 2s  .c  o  m*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class ParticleSystem extends GameObject {
  /**
   * 
   */
  private static final long serialVersionUID = 547619642611327530L;
  
  private final float initialLifeTime;
  private float lifeTime, particleDensity, angularDeviation, 
          ttl, particleSpeed, sizeFactor;
  
  private final ObjectPool<Particle> particlePool = new ObjectPool<Particle>(Particle.class);
  private final List<Particle> particles = new ArrayList<Particle>();
  
  private final List<SpriteObject> spriteList = new ArrayList<SpriteObject>();

  public ParticleSystem(final SpriteTuple[] sprites, Point position, float lifeTime, float particleDensity, 
              float angleInDegrees, float angularDeviation, float angularVelocity, float ttl, float particleSpeed, 
              float sizeFactor) {
    
    super(null, position, 0.0f, 0.0f, angleInDegrees, angularVelocity, 0.0f, 0.0f);
    
    this.position = position;
    this.angleInDegrees = angleInDegrees;
    this.angularVelocity = angularVelocity;
    
    this.initialLifeTime = lifeTime;
    this.lifeTime = lifeTime;
    
    this.particleDensity = particleDensity; 
    this.angularDeviation = angularDeviation;    
    
    this.ttl = ttl;
    
    this.particleSpeed = particleSpeed;
    
    this.sizeFactor = sizeFactor;
    
    loadSprites(sprites);
  }
    
  private void loadSprites(final SpriteTuple[] sprites) {    
    for (SpriteTuple st : sprites) {
      spriteList.add(new SpriteObject(st.getFileName(), st.getWidth(), st.getHeight(), st.getTw(), st.getTh()));
    }      
  }

  @Override
  public void render(SpriteBatch batch) {
    if (isVisible())
      for (final Particle p : particles)
        p.render(batch);
  }

  @Override
  public void step(float delta) {
    lifeTime -= 1.0f;
    if (initialLifeTime >= 0.0f && lifeTime <= 0.0f) {
      setDestroyed(true);
    } else {    
      for (int i = 0; i < (int) (particleDensity /* * delta*/); i++)
        addNewParticle();
      
      final Iterator<Particle> pi = particles.iterator();
      while (pi.hasNext()) {
        final Particle p = pi.next();
        p.step(delta);
        
        if (p.isDestroyed()) {
          particlePool.put(p);
          pi.remove();
        }
      }
    }
  }
  
  private void addNewParticle() {
    final float angularDeviation = (float) Util.random(0, (int) this.angularDeviation);

    final float speed = Util.random((int) 1.0f, (int) this.particleSpeed);    
    final int   ttl = Util.random(0, (int) this.ttl);
    
    final SpriteObject sprite = spriteList.get(Util.random(0, spriteList.size() - 1));
    
    try {
      final Particle p = particlePool.get();
      
      p.setState(sprite, position, angleInDegrees, angularDeviation, speed, 
             angularVelocity, ttl, this.sizeFactor);
      
      particles.add(p);
      
    } catch(Exception e) {
      e.printStackTrace();
    }
  }

  public float getParticleDensity() {
    return particleDensity;
  }

  public void setParticleDensity(float particleDensity) {
    this.particleDensity = particleDensity;
  }

  public float getAngularDeviation() {
    return angularDeviation;
  }

  public void setAngularDeviation(float angularDeviation) {
    this.angularDeviation = angularDeviation;
  }

  public float getTtl() {
    return ttl;
  }

  public void setTtl(float ttl) {
    this.ttl = ttl;
  }

  public float getParticleSpeed() {
    return particleSpeed;
  }

  public void setParticleSpeed(float speed) {
    this.particleSpeed = speed;
  }

  public float getSizeFactor() {
    return sizeFactor;
  }

  public void setSizeFactor(float sizeFactor) {
    this.sizeFactor = sizeFactor;
  }

  public void setPositionAndAngle(final Point position, final float angleInDegrees) {
    this.setPosition(position);
    this.setAngleInDegrees(angleInDegrees);
  }
}




Java Source Code List

org.x3n0m0rph59.breakout.App.java
org.x3n0m0rph59.breakout.BackgroundFactory.java
org.x3n0m0rph59.breakout.Background.java
org.x3n0m0rph59.breakout.Ball.java
org.x3n0m0rph59.breakout.BottomWall.java
org.x3n0m0rph59.breakout.Brick.java
org.x3n0m0rph59.breakout.Config.java
org.x3n0m0rph59.breakout.Destroyable.java
org.x3n0m0rph59.breakout.EffectManager.java
org.x3n0m0rph59.breakout.Effect.java
org.x3n0m0rph59.breakout.FontLoader.java
org.x3n0m0rph59.breakout.FontTuple.java
org.x3n0m0rph59.breakout.ForceFeedback.java
org.x3n0m0rph59.breakout.GameInputProcessor.java
org.x3n0m0rph59.breakout.GameObject.java
org.x3n0m0rph59.breakout.GameScreen.java
org.x3n0m0rph59.breakout.GameState.java
org.x3n0m0rph59.breakout.GrapplingHookSegment.java
org.x3n0m0rph59.breakout.GrapplingHook.java
org.x3n0m0rph59.breakout.HelpInputProcessor.java
org.x3n0m0rph59.breakout.HelpScreen.java
org.x3n0m0rph59.breakout.HighScoreManager.java
org.x3n0m0rph59.breakout.HighScoreScreen.java
org.x3n0m0rph59.breakout.HighScore.java
org.x3n0m0rph59.breakout.HighscoreInputProcessor.java
org.x3n0m0rph59.breakout.IOSLauncher.java
org.x3n0m0rph59.breakout.LevelLoader.java
org.x3n0m0rph59.breakout.LevelSetSelectorInputProcessor.java
org.x3n0m0rph59.breakout.LevelSetSelectorScreen.java
org.x3n0m0rph59.breakout.Logger.java
org.x3n0m0rph59.breakout.MenuInputProcessor.java
org.x3n0m0rph59.breakout.MenuScreen.java
org.x3n0m0rph59.breakout.MusicLoader.java
org.x3n0m0rph59.breakout.MusicStream.java
org.x3n0m0rph59.breakout.ObjectPool.java
org.x3n0m0rph59.breakout.Paddle.java
org.x3n0m0rph59.breakout.ParticleSystem.java
org.x3n0m0rph59.breakout.Particle.java
org.x3n0m0rph59.breakout.Point.java
org.x3n0m0rph59.breakout.Poolable.java
org.x3n0m0rph59.breakout.Powerup.java
org.x3n0m0rph59.breakout.Projectile.java
org.x3n0m0rph59.breakout.Renderable.java
org.x3n0m0rph59.breakout.ResourceMapperDecisionCache.java
org.x3n0m0rph59.breakout.ResourceMapper.java
org.x3n0m0rph59.breakout.ScoreBoard.java
org.x3n0m0rph59.breakout.ScreenManager.java
org.x3n0m0rph59.breakout.ScreenType.java
org.x3n0m0rph59.breakout.SettingsInputProcessor.java
org.x3n0m0rph59.breakout.SettingsScreen.java
org.x3n0m0rph59.breakout.SoundLayer.java
org.x3n0m0rph59.breakout.SoundLoader.java
org.x3n0m0rph59.breakout.SoundSprite.java
org.x3n0m0rph59.breakout.SpaceBomb.java
org.x3n0m0rph59.breakout.SpriteLoader.java
org.x3n0m0rph59.breakout.SpriteObject.java
org.x3n0m0rph59.breakout.SpriteTuple.java
org.x3n0m0rph59.breakout.Star.java
org.x3n0m0rph59.breakout.Stepable.java
org.x3n0m0rph59.breakout.TextAnimationManager.java
org.x3n0m0rph59.breakout.TextAnimation.java
org.x3n0m0rph59.breakout.Util.java
org.x3n0m0rph59.breakout.Vector.java
org.x3n0m0rph59.breakout.android.AndroidLauncher.java
org.x3n0m0rph59.breakout.client.HtmlLauncher.java
org.x3n0m0rph59.breakout.desktop.DesktopLauncher.java