cleaned up some magic numbers

This commit is contained in:
Jeffrey Ventrella 2013-07-24 16:52:37 -07:00
parent aee29a0ab1
commit 5e2dcfee53
4 changed files with 61 additions and 47 deletions

View file

@ -3650,10 +3650,12 @@ void Application::exportSettings() {
}
void Application::updateParticleSystem(float deltaTime) {
if (!_particleSystemInitialized) {
const int LIFESPAN_IN_SECONDS = 100000.0f;
const float EMIT_RATE_IN_SECONDS = 10000.0;
// create a stable test emitter and spit out a bunch of particles
_coolDemoParticleEmitter = _particleSystem.addEmitter();
@ -3662,9 +3664,9 @@ void Application::updateParticleSystem(float deltaTime) {
glm::vec3 particleEmitterPosition = glm::vec3(5.0f, 1.0f, 5.0f);
_particleSystem.setEmitterPosition (_coolDemoParticleEmitter, particleEmitterPosition);
_particleSystem.setEmitterParticleLifespan(_coolDemoParticleEmitter, 100000.0f);
_particleSystem.setEmitterParticleLifespan(_coolDemoParticleEmitter, LIFESPAN_IN_SECONDS);
_particleSystem.setEmitterThrust (_coolDemoParticleEmitter, 0.0f);
_particleSystem.setEmitterRate (_coolDemoParticleEmitter, 10000.0); // to emit a pile o particles now
_particleSystem.setEmitterRate (_coolDemoParticleEmitter, EMIT_RATE_IN_SECONDS); // to emit a pile o particles now
}
// signal that the particle system has been initialized

View file

@ -162,11 +162,11 @@ void ParticleSystem::killParticle(int p) {
void ParticleSystem::setParticleAttributes(int emitterIndex, ParticleAttributes attributes) {
for (int lifeStage = 0; lifeStage < NUM_PARTICLE_LIFE_STAGES; lifeStage ++ ) {
setParticleAttributes(emitterIndex, lifeStage, attributes);
setParticleAttributes(emitterIndex, (ParticleLifeStage)lifeStage, attributes);
}
}
void ParticleSystem::setParticleAttributes(int emitterIndex, int lifeStage, ParticleAttributes attributes) {
void ParticleSystem::setParticleAttributes(int emitterIndex, ParticleLifeStage lifeStage, ParticleAttributes attributes) {
ParticleAttributes * a = &_emitter[emitterIndex].particleAttributes[lifeStage];

View file

@ -10,9 +10,8 @@
#include <glm/gtc/quaternion.hpp>
const int MAX_PARTICLES = 5000;
const int MAX_EMITTERS = 100;
const int NUM_PARTICLE_LIFE_STAGES = 4; // each equal time-division of the particle's life can have different attributes
const int MAX_PARTICLES = 5000;
const int MAX_EMITTERS = 100;
enum ParticleRenderStyle
{
@ -22,6 +21,19 @@ enum ParticleRenderStyle
NUM_PARTICLE_RENDER_STYLES
};
enum ParticleLifeStage
{
PARTICLE_LIFESTAGE_0 = 0,
PARTICLE_LIFESTAGE_1,
PARTICLE_LIFESTAGE_2,
PARTICLE_LIFESTAGE_3,
NUM_PARTICLE_LIFE_STAGES
};
class ParticleSystem {
public:
@ -51,7 +63,7 @@ public:
void setUpDirection(glm::vec3 upDirection) {_upDirection = upDirection;} // tell particle system which direction is up
void setParticleAttributes (int emitterIndex, ParticleAttributes attributes); // set attributes for whole life of particles
void setParticleAttributes (int emitterIndex, int lifeStage, ParticleAttributes attributes); // set attributes for this life stage of particles
void setParticleAttributes (int emitterIndex, ParticleLifeStage lifeStage, ParticleAttributes attributes); // set attributes for this life stage
void setEmitterPosition (int emitterIndex, glm::vec3 position ) {_emitter[emitterIndex].position = position; }
void setEmitterParticleResolution (int emitterIndex, int resolution ) {_emitter[emitterIndex].particleResolution = resolution; }
void setEmitterDirection (int emitterIndex, glm::vec3 direction ) {_emitter[emitterIndex].direction = direction; }

View file

@ -304,10 +304,10 @@ void Hand::updateFingerParticles(float deltaTime) {
attributes.color = glm::vec4(red, green, blue, 1.0f);
attributes.radius = 0.01f + 0.005f * sinf(_testRaveGloveClock * 2.2f);
for ( int f = 0; f< NUM_FINGERS; f ++ ) {
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
}
}
@ -346,10 +346,10 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 0.0f;
attributes.bounce = 0.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
//-----------------------------------------
// trails
@ -373,16 +373,16 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 0.0f;
attributes.bounce = 0.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
attributes.radius = 0.002f;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
attributes.color = glm::vec4( 1.0f, 0.2f, 0.2f, 0.5f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
attributes.color = glm::vec4( 1.0f, 0.2f, 0.2f, 0.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
}
//-----------------------------------------
@ -408,22 +408,22 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 0.0f;
attributes.bounce = 1.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
attributes.radius = 0.01f;
attributes.jitter = 0.0f;
attributes.gravity = -0.005f;
attributes.color = glm::vec4( 1.0f, 0.2f, 0.0f, 0.4f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
attributes.radius = 0.01f;
attributes.gravity = 0.0f;
attributes.color = glm::vec4( 0.4f, 0.4f, 0.4f, 0.2f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
attributes.radius = 0.02f;
attributes.color = glm::vec4( 0.4f, 0.6f, 0.9f, 0.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
//-----------------------------------------
// water
@ -431,10 +431,10 @@ void Hand::setRaveGloveMode(int mode) {
} else if (mode == 3) {
_particleSystem.setParticleRenderStyle (_fingerParticleEmitter[f], PARTICLE_RENDER_STYLE_SPHERE );
_particleSystem.setShowingEmitterBaseParticle(_fingerParticleEmitter[f], true );
_particleSystem.setShowingEmitterBaseParticle(_fingerParticleEmitter[f], true );
_particleSystem.setEmitterParticleLifespan (_fingerParticleEmitter[f], 0.6f );
_particleSystem.setEmitterThrust (_fingerParticleEmitter[f], 0.001f );
_particleSystem.setEmitterRate (_fingerParticleEmitter[f], 100.0 );
_particleSystem.setEmitterRate (_fingerParticleEmitter[f], 100.0 );
_particleSystem.setEmitterParticleResolution (_fingerParticleEmitter[f], 5 );
attributes.radius = 0.001f;
@ -448,18 +448,18 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 0.0f;
attributes.bounce = 1.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
attributes.gravity = 0.01f;
attributes.jitter = 0.0f;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
attributes.color = glm::vec4( 0.8f, 0.9f, 1.0f, 0.2f);
attributes.radius = 0.002f;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
attributes.color = glm::vec4( 0.8f, 0.9f, 1.0f, 0.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
//-----------------------------------------
// flashy
@ -484,19 +484,19 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 0.0f;
attributes.bounce = 1.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
attributes.radius = 0.01f;
attributes.color = glm::vec4( 1.0f, 1.0f, 0.0f, 1.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
attributes.radius = 0.01f;
attributes.color = glm::vec4( 1.0f, 0.0f, 1.0f, 1.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
attributes.radius = 0.0f;
attributes.color = glm::vec4( 0.0f, 0.0f, 0.0f, 1.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
//-----------------------------------------
// Bozo sparkler
@ -521,19 +521,19 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 0.0f;
attributes.bounce = 1.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
attributes.radius = 0.01f;
attributes.color = glm::vec4( 1.0f, 1.0f, 0.0f, 1.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
attributes.radius = 0.01f;
attributes.color = glm::vec4( 1.0f, 0.0f, .0f, 1.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
attributes.radius = 0.0f;
attributes.color = glm::vec4( 0.0f, 0.0f, 1.0f, 0.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
//-----------------------------------------
// long sparkler
@ -558,19 +558,19 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 0.0f;
attributes.bounce = 1.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
attributes.radius = 0.005f;
attributes.color = glm::vec4( 0.0f, 0.5f, 0.5f, 0.8f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
attributes.radius = 0.007f;
attributes.color = glm::vec4( 0.5f, 0.0f, 0.5f, 0.5f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
attributes.radius = 0.02f;
attributes.color = glm::vec4( 0.0f, 0.0f, 1.0f, 0.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
//-----------------------------------------
// bubble snake
@ -595,19 +595,19 @@ void Hand::setRaveGloveMode(int mode) {
attributes.neighborRepulsion = 1.1f;
attributes.bounce = 0.0f;
attributes.usingCollisionSphere = false;
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 0, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_0, attributes);
attributes.radius = 0.002f;
attributes.color = glm::vec4( 1.0f, 1.0f, 1.0f, 1.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 1, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_1, attributes);
attributes.radius = 0.003f;
attributes.color = glm::vec4( 0.3f, 0.3f, 0.3f, 0.5f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 2, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_2, attributes);
attributes.radius = 0.004f;
attributes.color = glm::vec4( 0.3f, 0.3f, 0.3f, 0.0f);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], 3, attributes);
_particleSystem.setParticleAttributes(_fingerParticleEmitter[f], PARTICLE_LIFESTAGE_3, attributes);
}
}
}