package org.anddev.andengine.entity.particle; import org.anddev.andengine.engine.handler.physics.PhysicsHandler; import org.anddev.andengine.entity.sprite.Sprite; import org.anddev.andengine.opengl.texture.region.TextureRegion; import org.anddev.andengine.opengl.vertex.RectangleVertexBuffer; /** * (c) 2010 Nicolas Gramlich * (c) 2011 Zynga Inc. * * @author Nicolas Gramlich * @since 19:37:13 - 14.03.2010 */ public class Particle extends Sprite { // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== private float mLifeTime; private float mDeathTime = -1; boolean mDead = false; private final PhysicsHandler mPhysicsHandler = new PhysicsHandler(this); // =========================================================== // Constructors // ===========================================================; public Particle(final float pX, final float pY, final TextureRegion pTextureRegion) { super(pX, pY, pTextureRegion); this.mLifeTime = 0; } public Particle(final float pX, final float pY, final TextureRegion pTextureRegion, final RectangleVertexBuffer pRectangleVertexBuffer) { super(pX, pY, pTextureRegion, pRectangleVertexBuffer); this.mLifeTime = 0; } // =========================================================== // Getter & Setter // =========================================================== public float getLifeTime() { return this.mLifeTime; } public float getDeathTime() { return this.mDeathTime; } public void setDeathTime(final float pDeathTime) { this.mDeathTime = pDeathTime; } public boolean isDead() { return this.mDead ; } public void setDead(final boolean pDead) { this.mDead = pDead; } public PhysicsHandler getPhysicsHandler() { return this.mPhysicsHandler; } // =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== @Override protected void onManagedUpdate(final float pSecondsElapsed) { if(!this.mDead){ this.mLifeTime += pSecondsElapsed; this.mPhysicsHandler.onUpdate(pSecondsElapsed); super.onManagedUpdate(pSecondsElapsed); final float deathTime = this.mDeathTime; if(deathTime != -1 && this.mLifeTime > deathTime) { this.setDead(true); } } } // =========================================================== // Methods // =========================================================== @Override public void reset() { super.reset(); this.mPhysicsHandler.reset(); this.mDead = false; this.mDeathTime = -1; this.mLifeTime = 0; } // =========================================================== // Inner and Anonymous Classes // =========================================================== }