History

cleanup

Jeffrey Ventrella committed 13 years ago

Commit c6d301c1 parent 3444aa92 files · +15 −20Browse files

Showing the changes to interface/src/ParticleSystem.cpp (1 of 2 files). Show all

Unified · Split

interface/src/ParticleSystem.cpp+15−19
@@ -22,7 +22,6 @@ ParticleSystem::ParticleSystem() { · 21 unmodified lines
22 22
23 _timer = 0.0f;23 _timer = 0.0f;
24 _numEmitters = 0;24 _numEmitters = 0;
25 _numParticles = 0;
26 _upDirection = glm::vec3(0.0f, 1.0f, 0.0f); // default25 _upDirection = glm::vec3(0.0f, 1.0f, 0.0f); // default
27 26
28 for (unsigned int emitterIndex = 0; emitterIndex < MAX_EMITTERS; emitterIndex++) {27 for (unsigned int emitterIndex = 0; emitterIndex < MAX_EMITTERS; emitterIndex++) {
@@ -94,9 +93,9 @@ void ParticleSystem::simulate(float deltaTime) { · 65 unmodified lines
94 93
95 // update particles94 // update particles
96 95
97 for (unsigned int p = 0; p < _numParticles; p++) {96 for (int p = 0; p < MAX_PARTICLES; p++) {
98 if (_particle[p].alive) { 97 if (_particle[p].alive) {
99 if (_particle[p].age > _emitter[_particle[p].emitterIndex].particleLifespan) {98 if (_particle[p].age > _emitter[_particle[p].emitterIndex].particleLifespan) {
100 killParticle(p);99 killParticle(p);
101 } else {100 } else {
102 updateParticle(p, deltaTime);101 updateParticle(p, deltaTime);
@@ -114,10 +113,7 @@ void ParticleSystem::createParticle(int e, float timeFraction) { · 11 unmodified lines
114 _particle[p].alive = true;113 _particle[p].alive = true;
115 _particle[p].age = 0.0f;114 _particle[p].age = 0.0f;
116 _particle[p].velocity = _emitter[e].direction * _emitter[e].thrust;115 _particle[p].velocity = _emitter[e].direction * _emitter[e].thrust;
117 116 _particle[p].position = _emitter[e].previousPosition + timeFraction * (_emitter[e].position - _emitter[e].previousPosition);
118//_particle[p].position = _emitter[e].position;
119_particle[p].position = _emitter[e].previousPosition + timeFraction * (_emitter[e].position - _emitter[e].previousPosition);
120
121 _particle[p].radius = _emitter[e].particleAttributes[0].radius;117 _particle[p].radius = _emitter[e].particleAttributes[0].radius;
122 _particle[p].color = _emitter[e].particleAttributes[0].color;118 _particle[p].color = _emitter[e].particleAttributes[0].color;
123 _particle[p].previousParticle = -1;119 _particle[p].previousParticle = -1;
@@ -130,10 +126,6 @@ _particle[p].position = _emitter[e].previousPosition + timeFraction * (_emitter[ · 6 unmodified lines
130 126
131 _emitter[e].currentParticle = p;127 _emitter[e].currentParticle = p;
132 128
133 _numParticles ++;
134
135 assert(_numParticles <= MAX_PARTICLES);
136
137 break;129 break;
138 }130 }
139 }131 }
@@ -143,7 +135,6 @@ void ParticleSystem::killParticle(int p) { · 3 unmodified lines
143 135
144 assert( p >= 0);136 assert( p >= 0);
145 assert( p < MAX_PARTICLES);137 assert( p < MAX_PARTICLES);
146 assert( _numParticles > 0);
147 138
148 _particle[p].alive = false;139 _particle[p].alive = false;
149 _particle[p].previousParticle = -1;140 _particle[p].previousParticle = -1;
@@ -151,8 +142,6 @@ void ParticleSystem::killParticle(int p) { · 1 unmodified line
151 _particle[p].velocity = glm::vec3(0.0f, 0.0f, 0.0f);142 _particle[p].velocity = glm::vec3(0.0f, 0.0f, 0.0f);
152 _particle[p].age = 0.0f;143 _particle[p].age = 0.0f;
153 _particle[p].emitterIndex = -1; 144 _particle[p].emitterIndex = -1;
154
155 _numParticles --;
156 }145 }
157 146
158 147
@@ -196,6 +185,9 @@ void ParticleSystem::setParticleAttributesToDefault(ParticleAttributes * a) { · 37 unmodified lines
196 185
197void ParticleSystem::setParticleAttributes(int emitterIndex, ParticleLifeStage lifeStage, ParticleAttributes attributes) {186void ParticleSystem::setParticleAttributes(int emitterIndex, ParticleLifeStage lifeStage, ParticleAttributes attributes) {
198 187
188 assert(lifeStage >= 0 );
189 assert(lifeStage < NUM_PARTICLE_LIFE_STAGES );
190
199 ParticleAttributes * a = &_emitter[emitterIndex].particleAttributes[lifeStage];191 ParticleAttributes * a = &_emitter[emitterIndex].particleAttributes[lifeStage];
200 192
201 a->radius = attributes.radius;193 a->radius = attributes.radius;
@@ -258,7 +250,7 @@ void ParticleSystem::updateParticle(int p, float deltaTime) { · 56 unmodified lines
258 250
259 // apply neighbor attraction251 // apply neighbor attraction
260 int neighbor = p + 1;252 int neighbor = p + 1;
261 if (neighbor == _numParticles ) {253 if (neighbor == MAX_PARTICLES ) {
262 neighbor = 0;254 neighbor = 0;
263 }255 }
264 256
@@ -355,11 +347,15 @@ void ParticleSystem::updateParticle(int p, float deltaTime) { · 90 unmodified lines
355void ParticleSystem::killAllParticles() {347void ParticleSystem::killAllParticles() {
356 348
357 for (int e = 0; e < _numEmitters; e++) {349 for (int e = 0; e < _numEmitters; e++) {
358 _emitter[e].currentParticle = -1;350 _emitter[e].currentParticle = -1;
359 _emitter[e].emitReserve = 0.0f;351 _emitter[e].emitReserve = 0.0f;
352 _emitter[e].previousPosition = _emitter[e].position;
353 _emitter[e].rate = 0.0f;
354 _emitter[e].currentParticle = 0;
355 _emitter[e].numParticlesEmittedThisTime = 0;
360 }356 }
361 357
362 for (unsigned int p = 0; p < _numParticles; p++) {358 for (int p = 0; p < MAX_PARTICLES; p++) {
363 killParticle(p);359 killParticle(p);
364 }360 }
365}361}
@@ -383,7 +379,7 @@ void ParticleSystem::render() { · 17 unmodified lines
383 }; 379 };
384 380
385 // render the particles381 // render the particles
386 for (unsigned int p = 0; p < _numParticles; p++) {382 for (int p = 0; p < MAX_PARTICLES; p++) {
387 if (_particle[p].alive) {383 if (_particle[p].alive) {
388 if (_emitter[_particle[p].emitterIndex].particleLifespan > 0.0) {384 if (_emitter[_particle[p].emitterIndex].particleLifespan > 0.0) {
389 renderParticle(p);385 renderParticle(p);