package com.plattysoft.leonids.initializers;
import java.util.Random;
import com.plattysoft.leonids.Particle;
public class SpeeddModuleAndRangeInitializer implements ParticleInitializer {
private float mSpeedMin;
private float mSpeedMax;
private int mMinAngle;
private int mMaxAngle;
public SpeeddModuleAndRangeInitializer(float speedMin, float speedMax, int minAngle, int maxAngle) {
mSpeedMin = speedMin;
mSpeedMax = speedMax;
mMinAngle = minAngle;
mMaxAngle = maxAngle;
// Make sure the angles are in the [0-360) range
while (mMinAngle < 0) {
mMinAngle+=360;
}
while (mMaxAngle < 0) {
mMaxAngle+=360;
}
// Also make sure that mMinAngle is the smaller
if (mMinAngle > mMaxAngle) {
int tmp = mMinAngle;
mMinAngle = mMaxAngle;
mMaxAngle = tmp;
}
}
@Override
public void initParticle(Particle p, Random r) {
float speed = r.nextFloat()*(mSpeedMax-mSpeedMin) + mSpeedMin;
int angle;
if (mMaxAngle == mMinAngle) {
angle = mMinAngle;
}
else {
angle = r.nextInt(mMaxAngle - mMinAngle) + mMinAngle;
}
float angleInRads = (float) (angle*Math.PI/180f);
p.mSpeedX = (float) (speed * Math.cos(angleInRads));
p.mSpeedY = (float) (speed * Math.sin(angleInRads));
}
}