All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.mathiewz.slick.particles.ParticleEmitter Maven / Gradle / Ivy

Go to download

The main purpose of this libraryis to modernize and maintain the slick2D library.

The newest version!
package com.github.mathiewz.slick.particles;

import com.github.mathiewz.slick.Image;

/**
 * An emitter is responsible for producing the particles and controlling them during
 * their life. An implementation of this interface can be considered a particle
 * effect.
 *
 * @author kevin
 */
public interface ParticleEmitter {
    /**
     * Update the emitter, produce any particles required by requesting
     * them from the particle system provided.
     *
     * @param system
     *            The particle system used to create particles
     * @param delta
     *            The amount of time in milliseconds since last emitter update
     */
    public void update(ParticleSystem system, int delta);

    /**
     * Check if this emitter has completed it's cycle
     *
     * @return True if the emitter has completed it's cycle
     */
    public boolean completed();

    /**
     * Wrap up the particle emitter. This means the emitter will no longer produce
     * particles and will be marked as completed once the particles have expired
     */
    public void wrapUp();

    /**
     * Update a single particle that this emitter produced
     *
     * @param particle
     *            The particle to be updated
     * @param delta
     *            The amount of time in millisecond since last particle update
     */
    public void updateParticle(Particle particle, int delta);

    /**
     * Check if the emitter is enabled
     *
     * @return True if the emitter is enabled
     */
    public boolean isEnabled();

    /**
     * Indicate whether the emitter should be enabled
     *
     * @param enabled
     *            True if the emitter should be enabled
     */
    public void setEnabled(boolean enabled);

    /**
     * Check if this emitter should use additive blending
     *
     * @return True if the emitter should use the right blending
     */
    public boolean useAdditive();

    /**
     * Get the image to draw for each particle
     *
     * @return The image to draw for each particle
     */
    public Image getImage();

    /**
     * Check if the particles produced should maintain orientation
     *
     * @return True if the particles produced should maintain orientation
     */
    public boolean isOriented();

    /**
     * Check if this emitter should use points based on it's own settings
     * and those of the particle system
     *
     * @param system
     *            The particle system to cross check agianst
     * @return True if we should use points
     */
    public boolean usePoints(ParticleSystem system);

    /**
     * Clear the state of emitter back to default
     */
    public void resetState();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy