diff options
Diffstat (limited to 'src/particle')
-rw-r--r-- | src/particle/particleemitter.cpp | 20 | ||||
-rw-r--r-- | src/particle/particleemitterprop.h | 42 |
2 files changed, 34 insertions, 28 deletions
diff --git a/src/particle/particleemitter.cpp b/src/particle/particleemitter.cpp index b8ae200ce..855c62fa1 100644 --- a/src/particle/particleemitter.cpp +++ b/src/particle/particleemitter.cpp @@ -473,13 +473,25 @@ ParticleEmitter::readParticleEmitterProp(XmlNodePtrConst propertyNode, T def) const int period = XML::getProperty(propertyNode, "change-period", 0); const int phase = XML::getProperty(propertyNode, "change-phase", 0); if (change == "saw" || change == "sawtooth") - retval.setFunction(FUNC_SAW, amplitude, period, phase); + { + retval.setFunction(ParticleChangeFunc::FUNC_SAW, + amplitude, period, phase); + } else if (change == "sine" || change == "sinewave") - retval.setFunction(FUNC_SINE, amplitude, period, phase); + { + retval.setFunction(ParticleChangeFunc::FUNC_SINE, + amplitude, period, phase); + } else if (change == "triangle") - retval.setFunction(FUNC_TRIANGLE, amplitude, period, phase); + { + retval.setFunction(ParticleChangeFunc::FUNC_TRIANGLE, + amplitude, period, phase); + } else if (change == "square") - retval.setFunction(FUNC_SQUARE, amplitude, period, phase); + { + retval.setFunction(ParticleChangeFunc::FUNC_SQUARE, + amplitude, period, phase); + } return retval; } diff --git a/src/particle/particleemitterprop.h b/src/particle/particleemitterprop.h index 8e0716f2e..ecbaa3aec 100644 --- a/src/particle/particleemitterprop.h +++ b/src/particle/particleemitterprop.h @@ -25,27 +25,19 @@ #include <cmath> -#include "localconsts.h" - -/** - * Returns a random numeric value that is larger than or equal min and smaller - * than max - */ +#include "enums/particle/particlechangefunc.h" -enum ChangeFunc -{ - FUNC_NONE = 0, - FUNC_SINE, - FUNC_SAW, - FUNC_TRIANGLE, - FUNC_SQUARE -}; +#include "localconsts.h" template <typename T> struct ParticleEmitterProp final { ParticleEmitterProp() : - minVal(0), maxVal(0), changeFunc(FUNC_NONE), - changeAmplitude(0), changePeriod(0), changePhase(0) + minVal(0), + maxVal(0), + changeFunc(ParticleChangeFunc::FUNC_NONE), + changeAmplitude(0), + changePeriod(0), + changePhase(0) { } @@ -60,8 +52,10 @@ template <typename T> struct ParticleEmitterProp final set(val, val); } - void setFunction(ChangeFunc func, T amplitude, - const int period, const int phase) + void setFunction(ParticleChangeFuncT func, + T amplitude, + const int period, + const int phase) { changeFunc = func; changeAmplitude = amplitude; @@ -79,17 +73,17 @@ template <typename T> struct ParticleEmitterProp final switch (changeFunc) { - case FUNC_SINE: + case ParticleChangeFunc::FUNC_SINE: val += static_cast<T>(std::sin(M_PI * 2 * (static_cast<double>( tick % changePeriod) / static_cast<double>( changePeriod)))) * changeAmplitude; break; - case FUNC_SAW: + case ParticleChangeFunc::FUNC_SAW: val += static_cast<T>(changeAmplitude * (static_cast<double>( tick % changePeriod) / static_cast<double>( changePeriod))) * 2 - changeAmplitude; break; - case FUNC_TRIANGLE: + case ParticleChangeFunc::FUNC_TRIANGLE: if ((tick % changePeriod) * 2 < changePeriod) { val += changeAmplitude - static_cast<T>(( @@ -104,13 +98,13 @@ template <typename T> struct ParticleEmitterProp final // I have no idea why this works but it does } break; - case FUNC_SQUARE: + case ParticleChangeFunc::FUNC_SQUARE: if ((tick % changePeriod) * 2 < changePeriod) val += changeAmplitude; else val -= changeAmplitude; break; - case FUNC_NONE: + case ParticleChangeFunc::FUNC_NONE: default: // nothing break; @@ -122,7 +116,7 @@ template <typename T> struct ParticleEmitterProp final T minVal; T maxVal; - ChangeFunc changeFunc; + ParticleChangeFuncT changeFunc; T changeAmplitude; int changePeriod; int changePhase; |