History

improvements to particle system

Jeffrey Ventrella committed 13 years ago

Commit 87d9aae1 parent f89b1fc5 files · +66 −41Browse files

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

Unified · Split

interface/src/ParticleSystem.cpp+15−8
@@ -22,9 +22,9 @@ ParticleSystem::ParticleSystem() { · 21 unmodified lines
2222 _upDirection = glm::vec3(0.0f, 1.0f, 0.0f); // default
2323
2424 for (unsigned int emitterIndex = 0; emitterIndex < MAX_EMITTERS; emitterIndex++) {
25− _emitter[emitterIndex].position = glm::vec3(0.0f, 0.0f, 0.0f);
26− _emitter[emitterIndex].rotation = glm::quat();
27− _emitter[emitterIndex].visible = false;
25+ _emitter[emitterIndex].position = glm::vec3(0.0f, 0.0f, 0.0f);
26+ _emitter[emitterIndex].direction = glm::vec3(0.0f, 1.0f, 0.0f);
27+ _emitter[emitterIndex].visible = false;
2828 _emitter[emitterIndex].baseParticle.alive = false;
2929 _emitter[emitterIndex].baseParticle.age = 0.0f;
3030 _emitter[emitterIndex].baseParticle.lifespan = 0.0f;
@@ -90,10 +90,10 @@ void ParticleSystem::simulate(float deltaTime) { · 59 unmodified lines
9090 }
9191 }
9292
93−void ParticleSystem::emitParticlesNow(int e, int num, glm::vec3 velocity, float lifespan) {
93+void ParticleSystem::emitParticlesNow(int e, int num, float thrust, float lifespan) {
9494
9595 for (unsigned int p = 0; p < num; p++) {
96− createParticle(e, velocity, lifespan);
96+ createParticle(e, _emitter[e].direction * thrust, lifespan);
9797 }
9898 }
9999
@@ -212,9 +212,9 @@ void ParticleSystem::updateParticle(int p, float deltaTime) { · 112 unmodified lines
212212 // apply tornado force
213213
214214
215− glm::vec3 emitterUp = myEmitter.rotation * IDENTITY_UP;
215+ //glm::vec3 emitterUp = myEmitter.rotation * IDENTITY_UP;
216216
217− glm::vec3 tornadoDirection = glm::cross(vectorToHome, emitterUp);
217+ glm::vec3 tornadoDirection = glm::cross(vectorToHome, myEmitter.direction);
218218 _particle[p].velocity += tornadoDirection * myEmitter.particleAttributes[lifeStage].tornadoForce * deltaTime;
219219
220220 // apply air friction
@@ -351,12 +351,19 @@ void ParticleSystem::renderParticle(int p) { · 130 unmodified lines
351351
352352 void ParticleSystem::renderEmitter(int e, float size) {
353353
354+ /*
354355 glm::vec3 r = _emitter[e].rotation * IDENTITY_FRONT * size;
355356 glm::vec3 u = _emitter[e].rotation * IDENTITY_RIGHT * size;
356357 glm::vec3 f = _emitter[e].rotation * IDENTITY_UP * size;
358+ */
357359
360+ glm::vec3 f = _emitter[e].direction;
361+ //glm::vec3 r = glm::vec3(_emitter[e].direction.y, _emitter[e].direction.z, _emitter[e].direction.x);
362+ //glm::vec3 u = glm::vec3(_emitter[e].direction.z, _emitter[e].direction.x, _emitter[e].direction.y);
363+
358364 glLineWidth(2.0f);
359365
366+/*
360367 glColor3f(0.8f, 0.4, 0.4);
361368 glBegin(GL_LINES);
362369 glVertex3f(_emitter[e].position.x, _emitter[e].position.y, _emitter[e].position.z);
@@ -368,7 +375,7 @@ void ParticleSystem::renderEmitter(int e, float size) { · 5 unmodified lines
368375 glVertex3f(_emitter[e].position.x, _emitter[e].position.y, _emitter[e].position.z);
369376 glVertex3f(_emitter[e].position.x + u.x, _emitter[e].position.y + u.y, _emitter[e].position.z + u.z);
370377 glEnd();
371−
378+*/
372379 glColor3f(0.4f, 0.4, 0.8);
373380 glBegin(GL_LINES);
374381 glVertex3f(_emitter[e].position.x, _emitter[e].position.y, _emitter[e].position.z);