History

improved particle rainbow color cycle mode

Jeffrey Ventrella committed 13 years ago

Commit 6e69c4f1 parent d87b4a85 files · +72 −162Browse files

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

Unified · Split

interface/src/ParticleSystem.cpp+30−9
@@ -322,27 +322,48 @@ void ParticleSystem::updateParticle(int p, float deltaTime) { · 321 unmodified lines
322 322
323 // apply color modulation323 // apply color modulation
324 if (myEmitter.particleAttributes[lifeStage ].modulationAmplitude > 0.0f) {324 if (myEmitter.particleAttributes[lifeStage ].modulationAmplitude > 0.0f) {
325 float modulation = 0.0f;325 float redModulation = 0.0f;
326 float greenModulation = 0.0f;
327 float bueModulation = 0.0f;
326 float radian = _timer * myEmitter.particleAttributes[lifeStage ].modulationRate * PI_TIMES_TWO;328 float radian = _timer * myEmitter.particleAttributes[lifeStage ].modulationRate * PI_TIMES_TWO;
329
327 if (myEmitter.particleAttributes[lifeStage ].modulationStyle == COLOR_MODULATION_STYLE_LIGHNTESS_PULSE) {330 if (myEmitter.particleAttributes[lifeStage ].modulationStyle == COLOR_MODULATION_STYLE_LIGHNTESS_PULSE) {
328 if (sinf(radian) > 0.0f) {331 if (sinf(radian) > 0.0f) {
329 modulation = myEmitter.particleAttributes[lifeStage].modulationAmplitude;332 redModulation = myEmitter.particleAttributes[lifeStage].modulationAmplitude;
333 greenModulation = myEmitter.particleAttributes[lifeStage].modulationAmplitude;
334 bueModulation = myEmitter.particleAttributes[lifeStage].modulationAmplitude;
330 }335 }
336
331 } else if (myEmitter.particleAttributes[lifeStage].modulationStyle == COLOR_MODULATION_STYLE_LIGHTNESS_WAVE) {337 } else if (myEmitter.particleAttributes[lifeStage].modulationStyle == COLOR_MODULATION_STYLE_LIGHTNESS_WAVE) {
332 float a = myEmitter.particleAttributes[lifeStage].modulationAmplitude;338 float amp = myEmitter.particleAttributes[lifeStage].modulationAmplitude;
333 modulation = a * ONE_HALF + sinf(radian) * a * ONE_HALF;339 float brightness = amp * ONE_HALF + sinf(radian) * amp * ONE_HALF;
340 redModulation = brightness;
341 greenModulation = brightness;
342 bueModulation = brightness;
343
344 } else if (myEmitter.particleAttributes[lifeStage].modulationStyle == COLOR_MODULATION_STYLE_RAINBOW_CYCLE) {
345
346 float amp = myEmitter.particleAttributes[lifeStage].modulationAmplitude * ONE_HALF;
347 redModulation = sinf(radian * 0.5f) * amp;
348 greenModulation = sinf(radian * 0.7f) * amp;
349 bueModulation = sinf(radian * 1.0f) * amp;
334 }350 }
335 351
336 _particle[p].color.r += modulation;352 _particle[p].color.r += redModulation;
337 _particle[p].color.g += modulation;353 _particle[p].color.g += greenModulation;
338 _particle[p].color.b += modulation;354 _particle[p].color.b += bueModulation;
339 _particle[p].color.a += modulation;355 _particle[p].color.a = 1.0f;
340 356
341 if (_particle[p].color.r > 1.0f) {_particle[p].color.r = 1.0f;}357 if (_particle[p].color.r > 1.0f) {_particle[p].color.r = 1.0f;}
342 if (_particle[p].color.g > 1.0f) {_particle[p].color.g = 1.0f;}358 if (_particle[p].color.g > 1.0f) {_particle[p].color.g = 1.0f;}
343 if (_particle[p].color.b > 1.0f) {_particle[p].color.b = 1.0f;}359 if (_particle[p].color.b > 1.0f) {_particle[p].color.b = 1.0f;}
344 if (_particle[p].color.a > 1.0f) {_particle[p].color.a = 1.0f;}360 if (_particle[p].color.a > 1.0f) {_particle[p].color.a = 1.0f;}
345 }361
362 if (_particle[p].color.r < 0.0f) {_particle[p].color.r = 0.0f;}
363 if (_particle[p].color.g < 0.0f) {_particle[p].color.g = 0.0f;}
364 if (_particle[p].color.b < 0.0f) {_particle[p].color.b = 0.0f;}
365 if (_particle[p].color.a < 0.0f) {_particle[p].color.a = 0.0f;}
366 }
346 367
347 // do this at the end...368 // do this at the end...
348 _particle[p].age += deltaTime; 369 _particle[p].age += deltaTime;