159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage com.jme3.effect.influencers; 259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.effect.Particle; 459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.effect.ParticleEmitter; 559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.effect.shapes.EmitterShape; 659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.export.Savable; 759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.Vector3f; 859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/** 1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * An interface that defines the methods to affect initial velocity of the particles. 1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @author Marcin Roguski (Kaelthas) 1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic interface ParticleInfluencer extends Savable, Cloneable { 1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method influences the particle. 1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param particle 1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * particle to be influenced 1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param emitterShape 2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the shape of it emitter 2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta void influenceParticle(Particle particle, EmitterShape emitterShape); 2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method clones the influencer instance. 2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return cloned instance 2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public ParticleInfluencer clone(); 2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param initialVelocity 3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Set the initial velocity a particle is spawned with, 3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the initial velocity given in the parameter will be varied according 3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * to the velocity variation set in {@link ParticleEmitter#setVelocityVariation(float) }. 3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * A particle will move toward its velocity unless it is effected by the 3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * gravity. 3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta void setInitialVelocity(Vector3f initialVelocity); 3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the initial velocity. 4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the initial velocity 4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Vector3f getInitialVelocity(); 4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param variation 4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Set the variation by which the initial velocity 4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * of the particle is determined. <code>variation</code> should be a value 5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * from 0 to 1, where 0 means particles are to spawn with exactly 5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the velocity given in {@link ParticleEmitter#setStartVel(com.jme3.math.Vector3f) }, 5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * and 1 means particles are to spawn with a completely random velocity. 5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta void setVelocityVariation(float variation); 5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the velocity variation. 5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the velocity variation 5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta float getVelocityVariation(); 6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta} 62