diff options
author | chai <chaifix@163.com> | 2018-11-19 21:20:32 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-11-19 21:20:32 +0800 |
commit | 22715652592b326feae3010a8bc80d6f8fadba50 (patch) | |
tree | 6c3a92254dde92b32a194ee757a6152c1ab00c7b /src | |
parent | b1b5adfcbed66691aa6d1775d20c6aec6d1a4696 (diff) |
*粒子系统
Diffstat (limited to 'src')
-rw-r--r-- | src/libjin/game/je_application.cpp | 2 | ||||
-rw-r--r-- | src/libjin/graphics/particles/je_particle.cpp | 2 | ||||
-rw-r--r-- | src/libjin/graphics/particles/je_particle_emitter.cpp | 12 | ||||
-rw-r--r-- | src/libjin/graphics/particles/je_particle_system.cpp | 3 | ||||
-rw-r--r-- | src/libjin/input/je_mouse.h | 2 | ||||
-rw-r--r-- | src/libjin/math/je_math.h | 18 | ||||
-rw-r--r-- | src/libjin/math/je_random.cpp | 6 |
7 files changed, 27 insertions, 18 deletions
diff --git a/src/libjin/game/je_application.cpp b/src/libjin/game/je_application.cpp index 723a809..9460738 100644 --- a/src/libjin/game/je_application.cpp +++ b/src/libjin/game/je_application.cpp @@ -54,7 +54,7 @@ namespace JinEngine if (_onDraw != nullptr) _onDraw(); wnd->swapBuffers(); - sleep(1); + sleep(16); } quitloop:; } diff --git a/src/libjin/graphics/particles/je_particle.cpp b/src/libjin/graphics/particles/je_particle.cpp index 53f4570..20e4b9e 100644 --- a/src/libjin/graphics/particles/je_particle.cpp +++ b/src/libjin/graphics/particles/je_particle.cpp @@ -37,7 +37,7 @@ namespace JinEngine void Particle::update(float dt) { float t = life / lifeTime; - // Lerp color + // Lerp color. color.r = lerp<int>(colorStart.r, colorEnd.r, t); color.g = lerp<int>(colorStart.g, colorEnd.g, t); color.b = lerp<int>(colorStart.b, colorEnd.b, t); diff --git a/src/libjin/graphics/particles/je_particle_emitter.cpp b/src/libjin/graphics/particles/je_particle_emitter.cpp index d8fb78d..35d654e 100644 --- a/src/libjin/graphics/particles/je_particle_emitter.cpp +++ b/src/libjin/graphics/particles/je_particle_emitter.cpp @@ -57,9 +57,7 @@ namespace JinEngine p->transform.setPosition(x, y); } else - { p->transform.setPosition(mDef.positionDef.position.position); - } // Init speed. float r = 0; if (mDef.directionDef.enableRandom) @@ -72,27 +70,27 @@ namespace JinEngine else f = mDef.forceDef.force.force; p->speed.set(f*cos(r), f*sin(r)); - // Init life time + // Init life time. if (mPDef.lifeTimeDef.enableRandom) p->lifeTime = rng.randf(mPDef.lifeTimeDef.life.random.floor, mPDef.lifeTimeDef.life.random.floor, ACCURACY_4); else p->lifeTime = mPDef.lifeTimeDef.life.life; - // Init linear accelaration + // Init linear accelaration. p->linearAcceleration = mPDef.linearAccelarationDef.linearAccelaration; - // Init angular accelaration + // Init angular accelaration. p->radialAcceleration = mPDef.radialAccelarationDef.radialAccelaration; // Init Angular speed. if (mPDef.angularSpeedDef.enableRandom) p->angularSpeed = rng.randf(mPDef.angularSpeedDef.angularSpeed.random.floor, mPDef.angularSpeedDef.angularSpeed.random.ceil, ACCURACY_4); else p->angularSpeed = mPDef.angularSpeedDef.angularSpeed.angularSpeed; - // Scale over time + // Scale over time. if (mPDef.sizeOverTimeDef.enable) { p->scaleBegin = mPDef.sizeOverTimeDef.start; p->scaleEnd = mPDef.sizeOverTimeDef.end; } - // Color over time + // Color over time. if (mPDef.colorOverTimeDef.enable) { p->colorStart = mPDef.colorOverTimeDef.colorStart; diff --git a/src/libjin/graphics/particles/je_particle_system.cpp b/src/libjin/graphics/particles/je_particle_system.cpp index a81a3c9..942da99 100644 --- a/src/libjin/graphics/particles/je_particle_system.cpp +++ b/src/libjin/graphics/particles/je_particle_system.cpp @@ -38,8 +38,11 @@ namespace JinEngine void ParticleSystem::render(float x, float y, float sx /* = 1 */, float sy /* = 1 */, float r /* = 0 */, float ax /* = 0 */, float ay /* = 0 */) { + gl.push(); + gl.translate(x, y); for (Particle* p : mAliveParticles) p->render(); + gl.pop(); } void ParticleSystem::setGraphic(const Graphic* graphic) diff --git a/src/libjin/input/je_mouse.h b/src/libjin/input/je_mouse.h index 3c4ad9b..a4e71fc 100644 --- a/src/libjin/input/je_mouse.h +++ b/src/libjin/input/je_mouse.h @@ -46,4 +46,4 @@ namespace JinEngine #endif // defined(jin_input) -#endif // __JE_MOUSE_H__ +#endif // __JE_MOUSE_H__
\ No newline at end of file diff --git a/src/libjin/math/je_math.h b/src/libjin/math/je_math.h index de57e36..ae4017f 100644 --- a/src/libjin/math/je_math.h +++ b/src/libjin/math/je_math.h @@ -48,12 +48,6 @@ namespace JinEngine } template<typename T> - inline T abs(T a) - { - return a > 0 ? a : -a; - } - - template<typename T> inline T lowerBound(T a, T lower) { return a < lower ? lower : a; @@ -77,6 +71,18 @@ namespace JinEngine return a + f * (b - a); } + template<typename T> + inline T abs(T a) + { + return a > 0 ? a : -a; + } + + template<typename T> + inline T reverse(T a) + { + return -a; + } + } // namespace Math } // namespace JinEngine diff --git a/src/libjin/math/je_random.cpp b/src/libjin/math/je_random.cpp index 216fd79..b9313d2 100644 --- a/src/libjin/math/je_random.cpp +++ b/src/libjin/math/je_random.cpp @@ -1,4 +1,5 @@ #include <math.h> +#include "je_math.h" #include "je_random.h" namespace JinEngine @@ -43,9 +44,10 @@ namespace JinEngine float RandomGenerator::randf(float min, float max, int ac) { + float floor = 0, ceil = max + reverse<float>(min); uint32 a = pow(10.f, ac); - uint32 n = rand(min*a, max*a); - return (float)n / a; + uint32 n = rand(floor*a, ceil*a); + return (float)n / a + min; } } |