/// <summary>
/// Initializes a particle
/// </summary>
/// <param name="p"></param>
/// <param name="where"></param>
/// <param name="direction">set to null for a random direction for each particle</param>
protected virtual void InitializeParticle(Particle p, Vector2 where, Vector2 direction)
{
if (direction == null)
{
direction = PickRandomDirection();
}
// pick some random values for our particle
float velocity =
RandomNumberProvider.RandomBetween(minInitialSpeed, maxInitialSpeed);
float acceleration =
RandomNumberProvider.RandomBetween(minAcceleration, maxAcceleration);
float lifetime =
RandomNumberProvider.RandomBetween(minLifetime, maxLifetime);
float scale =
RandomNumberProvider.RandomBetween(minScale, maxScale);
float rotationSpeed =
RandomNumberProvider.RandomBetween(minRotationSpeed, maxRotationSpeed);
// then initialize it with those random values. initialize will save those,
// and make sure it is marked as active.
p.Initialize(
where, velocity * direction, acceleration * direction,
lifetime, scale, rotationSpeed);
}