Add 'ellipse' distribution to ParticleSystem

This commit is contained in:
Nathan Korth
2016-10-28 16:26:28 -04:00
parent db78c89639
commit 53c528aa44
2 changed files with 10 additions and 1 deletions
+8
View File
@@ -242,6 +242,7 @@ void ParticleSystem::initParticle(Particle *p, float t)
p->position = pos;
float rand_x, rand_y;
switch (areaSpreadDistribution)
{
case DISTRIBUTION_UNIFORM:
@@ -252,6 +253,12 @@ void ParticleSystem::initParticle(Particle *p, float t)
p->position.x += (float) rng.randomNormal(areaSpread.getX());
p->position.y += (float) rng.randomNormal(areaSpread.getY());
break;
case DISTRIBUTION_ELLIPSE:
rand_x = (float) rng.random(-1, 1);
rand_y = (float) rng.random(-1, 1);
p->position.x += areaSpread.getX() * (rand_x * sqrt(1 - 0.5f*pow(rand_y, 2)));
p->position.y += areaSpread.getY() * (rand_y * sqrt(1 - 0.5f*pow(rand_x, 2)));
break;
case DISTRIBUTION_NONE:
default:
break;
@@ -969,6 +976,7 @@ StringMap<ParticleSystem::AreaSpreadDistribution, ParticleSystem::DISTRIBUTION_M
{ "none", DISTRIBUTION_NONE },
{ "uniform", DISTRIBUTION_UNIFORM },
{ "normal", DISTRIBUTION_NORMAL },
{ "ellipse", DISTRIBUTION_ELLIPSE },
};
StringMap<ParticleSystem::AreaSpreadDistribution, ParticleSystem::DISTRIBUTION_MAX_ENUM> ParticleSystem::distributions(ParticleSystem::distributionsEntries, sizeof(ParticleSystem::distributionsEntries));
+2 -1
View File
@@ -46,13 +46,14 @@ class ParticleSystem : public Drawable
{
public:
/**
* Type of distribution new particles are drawn from: None, uniform, normal.
* Type of distribution new particles are drawn from: None, uniform, normal, ellipse.
*/
enum AreaSpreadDistribution
{
DISTRIBUTION_NONE,
DISTRIBUTION_UNIFORM,
DISTRIBUTION_NORMAL,
DISTRIBUTION_ELLIPSE,
DISTRIBUTION_MAX_ENUM
};