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 /examples/particle_system/main.cpp | |
parent | b1b5adfcbed66691aa6d1775d20c6aec6d1a4696 (diff) |
*粒子系统
Diffstat (limited to 'examples/particle_system/main.cpp')
-rw-r--r-- | examples/particle_system/main.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/examples/particle_system/main.cpp b/examples/particle_system/main.cpp index 0d2b0f4..f4b047c 100644 --- a/examples/particle_system/main.cpp +++ b/examples/particle_system/main.cpp @@ -33,34 +33,37 @@ Color frag(Color col, Texture tex, Vertex v) } #END_FRAGMENT_SHADER )"; +const float Pi = 3.14f; void onLoad() { - tex = Texture::createTexture("smoke.png"); + tex = Texture::createTexture("texture.png"); shader = Shader::createShader(shader_code); ParticleSystemDef def; def.maxParticleCount = 30; - def.emitterDef.emitRateDef.rate.rate = 0.5f; + def.emitterDef.emitRateDef.rate.rate = 0.03f; def.emitterDef.forceDef.force.force = 20.f; - def.emitterDef.positionDef.position.position = Vector2<float>(200, 200); + def.emitterDef.positionDef.enableRandom = true; + def.emitterDef.positionDef.position.random.floor = Vector2<float>(0, 0); + def.emitterDef.positionDef.position.random.ceil = Vector2<float>(0, 0); def.emitterDef.directionDef.enableRandom = true; - def.emitterDef.directionDef.direction.random.floor = 0; - def.emitterDef.directionDef.direction.random.ceil = 3.14 * 2; + def.emitterDef.directionDef.direction.random.floor = -Pi /6 - Pi /2; + def.emitterDef.directionDef.direction.random.ceil = Pi /6 - Pi / 2; def.particleDef.colorOverTimeDef.enable = true; - def.particleDef.colorOverTimeDef.colorStart = Color(255, 255, 255, 255); - def.particleDef.colorOverTimeDef.colorEnd = Color(255, 255, 255, 0); - + def.particleDef.colorOverTimeDef.colorStart = Color(255, 255, 0, 255); + def.particleDef.colorOverTimeDef.colorEnd = Color(255, 0, 0, 0); +/* def.particleDef.angularSpeedDef.enableRandom = true; - def.particleDef.angularSpeedDef.angularSpeed.random.floor = 0.05; + def.particleDef.angularSpeedDef.angularSpeed.random.floor = -1; def.particleDef.angularSpeedDef.angularSpeed.random.ceil = 1; - +*/ def.particleDef.sizeOverTimeDef.enable = true; def.particleDef.sizeOverTimeDef.start = 1; - def.particleDef.sizeOverTimeDef.end = 3; + def.particleDef.sizeOverTimeDef.end = 0.1; - def.particleDef.lifeTimeDef.life.life = 5; + def.particleDef.lifeTimeDef.life.life = 4; p = new ParticleSystem(def); p->setGraphic(tex); } @@ -81,8 +84,10 @@ void onUpdate(int ms) void onDraw() { shader->use(); - p->render(50, 50); - //tex->render(10, 10); + Mouse* m = Mouse::get(); + int x, y; + m->getState(&x, &y); + p->render(x, y); shader->unuse(); } |