diff options
author | chai <chaifix@163.com> | 2019-01-12 21:48:33 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-01-12 21:48:33 +0800 |
commit | 8b00d67febf133e89f6a0bfabc41feed555dc4a9 (patch) | |
tree | fe48ef17c250afa40c2588300fcdb5920dba6951 /src/libjin/graphics/particles/je_particle_emitter.cpp | |
parent | a907c39756ef6b368d06643afa491c49a9044a8e (diff) |
*去掉文件前缀je_
Diffstat (limited to 'src/libjin/graphics/particles/je_particle_emitter.cpp')
-rw-r--r-- | src/libjin/graphics/particles/je_particle_emitter.cpp | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/src/libjin/graphics/particles/je_particle_emitter.cpp b/src/libjin/graphics/particles/je_particle_emitter.cpp deleted file mode 100644 index 644fd6e..0000000 --- a/src/libjin/graphics/particles/je_particle_emitter.cpp +++ /dev/null @@ -1,118 +0,0 @@ -#include <time.h> - -#include "../../math/je_random.h" - -#include "je_particle_emitter.h" -#include "je_particle_system.h" - -using namespace JinEngine::Math; - -namespace JinEngine -{ - namespace Graphics - { - namespace Particles - { - - static const uint8 ACCURACY_4 = 4; - static const uint8 ACCURACY_5 = 5; - static const uint8 ACCURACY_6 = 6; - - // Particle emitter - static RandomGenerator rng(0xEA44944); - - ParticleEmitter::ParticleEmitter(ParticleSystem& ps) - : mPS(ps) - , mDef(ps.mDef.emitterDef) - , mPDef(ps.mDef.particleDef) - , mTime(0) - { - } - - void ParticleEmitter::update(float dt) - { - mTime += dt; - for (;mTime >= mInterval; mTime -= mInterval) - { - emit(); - // Random rate. - if (mDef.emitRateDef.enableRandom) - mInterval = rng.randf(mDef.emitRateDef.rate.random.floor, mDef.emitRateDef.rate.random.ceil, ACCURACY_5); - else - mInterval = mDef.emitRateDef.rate.rate; - } - } - - void ParticleEmitter::emit() - { - Particle* p = mPS.claim(); - if (p == nullptr) - return; - p->reset(); - p->def = &mPDef; - // Init position. - if (mDef.positionDef.enableRandom) - { - float x = rng.randf(mDef.positionDef.position.random.floor.x(), mDef.positionDef.position.random.ceil.x(), ACCURACY_4); - float y = rng.randf(mDef.positionDef.position.random.floor.y(), mDef.positionDef.position.random.ceil.y(), ACCURACY_4); - x += mPS.mPosition.x(); - y += mPS.mPosition.y(); - p->transform.setPosition(x, y); - } - else - { - p->transform.setPosition(mDef.positionDef.position.position + mPS.mPosition); - } - // Init speed. - float r = 0; - if (mDef.directionDef.enableRandom) - r = rng.randf(mDef.directionDef.direction.random.floor, mDef.directionDef.direction.random.ceil, ACCURACY_4); - else - r = mDef.directionDef.direction.direction; - float f = 0; - if (mDef.forceDef.enableRandom) - f = rng.randf(mDef.forceDef.force.random.floor, mDef.forceDef.force.random.ceil, ACCURACY_4); - else - f = mDef.forceDef.force.force; - p->velocity.set(f*cos(r), f*sin(r)); - if (f != 0) p->updateFlags |= Particle::UPDATE_POSITION; - // Init life time. - if (mPDef.lifeTimeDef.enableRandom) - p->lifeTime = rng.randf(mPDef.lifeTimeDef.life.random.floor, mPDef.lifeTimeDef.life.random.ceil, ACCURACY_4); - else - p->lifeTime = mPDef.lifeTimeDef.life.life; - // Init linear accelaration. - p->linearAcceleration = mPDef.linearAccelarationDef.linearAccelaration; - if(!p->linearAcceleration.isZero()) - p->updateFlags |= (Particle::UPDATE_VELOCITY | Particle::UPDATE_POSITION); - // 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; - if (p->angularSpeed != 0) - p->updateFlags |= Particle::UPDATE_ROTATION; - // Scale over time. - if (mPDef.scaleDef.overTime.enable) - p->updateFlags |= Particle::UPDATE_SCALE; - else - p->transform.setScale(mPDef.scaleDef.scale, mPDef.scaleDef.scale); - // Color over time. - if (mPDef.colorDef.overTime.enable) - p->updateFlags |= Particle::UPDATE_COLOR; - else - p->color = mPDef.colorDef.color; - // Sprite - if (mPDef.spritesDef.mode != SpriteMode::SINGLE) - { - p->updateFlags |= Particle::UPDATE_SPRITE; - if (mPDef.spritesDef.mode == SpriteMode::RANDOM) - p->spriteIndex = rng.rand(0, mPDef.spritesDef.sprites.size() - 1); - } - } - - } - } -}
\ No newline at end of file |