Showing the changes to interface/src/ParticleSystem.cpp (1 of 5 files). Show all
Unified · Split
| @@ -322,27 +322,48 @@ void ParticleSystem::updateParticle(int p, float deltaTime) { · 321 unmodified lines | |||
| 322 | 322 | ||
| 323 | // apply color modulation | 323 | // 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; |