public class

OnAndOffCameraExpireModifier

extends OffCameraExpireModifier
package org.anddev.andengine.entity.particle.modifier;

import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.entity.particle.Particle;
import org.anddev.andengine.entity.particle.modifier.OffCameraExpireModifier;

/**
 * <p>Causes the particle to expire after it has entered and left the view of the camera.</p>
 * 
 * <p>This allows you to create a particle off camera, move it on camera, and have it expire once it leaves the camera.</p>
 * 
 * <p>(c) 2011 Nicolas Gramlich<br> 
 * (c) 2011 Zynga Inc.</p>
 * 
 * @author Scott Kennedy
 * @since 27:10:00 - 08.08.2011
 */
public class OnAndOffCameraExpireModifier extends OffCameraExpireModifier {

 // ===========================================================
    // Constants
    // ===========================================================

    // ===========================================================
    // Fields
    // ===========================================================

    private boolean mHasBeenOnCamera = false;

    // ===========================================================
    // Constructors
    // ===========================================================

    public OnAndOffCameraExpireModifier(final Camera pCamera) {
            super(pCamera);
    }

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================

    @Override
    public void onUpdateParticle(final Particle pParticle) {
        if(!this.mHasBeenOnCamera && getCamera().isRectangularShapeVisible(pParticle)) {
            mHasBeenOnCamera = true;
        }
    
        if(this.mHasBeenOnCamera) {
            super.onUpdateParticle(pParticle);
        }
    }

    // ===========================================================
    // Methods
    // ===========================================================

    // ===========================================================
    // Inner and Anonymous Classes
    // ===========================================================

}