diff options
Diffstat (limited to 'examples/particle_system/main.cpp')
-rw-r--r-- | examples/particle_system/main.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/examples/particle_system/main.cpp b/examples/particle_system/main.cpp index f4b047c..a838bed 100644 --- a/examples/particle_system/main.cpp +++ b/examples/particle_system/main.cpp @@ -18,6 +18,7 @@ Timer timer; Timer::Handler* hnd; Texture* tex; Shader* shader; +Sprite* spr; const char* shader_code = R"( #VERTEX_SHADER Vertex vert(Vertex v) @@ -37,19 +38,20 @@ const float Pi = 3.14f; void onLoad() { tex = Texture::createTexture("texture.png"); + spr = new Sprite(tex, Sprite::Origin::MiddleCenter); shader = Shader::createShader(shader_code); ParticleSystemDef def; def.maxParticleCount = 30; - def.emitterDef.emitRateDef.rate.rate = 0.03f; - def.emitterDef.forceDef.force.force = 20.f; + def.emitterDef.emitRateDef.rate.rate = 0.01f; + def.emitterDef.forceDef.force.force = 10.f; 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.positionDef.position.random.ceil = Vector2<float>(0, 10); def.emitterDef.directionDef.enableRandom = true; - def.emitterDef.directionDef.direction.random.floor = -Pi /6 - Pi /2; - def.emitterDef.directionDef.direction.random.ceil = Pi /6 - Pi / 2; + def.emitterDef.directionDef.direction.random.floor = 0; + def.emitterDef.directionDef.direction.random.ceil = Pi*2; def.particleDef.colorOverTimeDef.enable = true; def.particleDef.colorOverTimeDef.colorStart = Color(255, 255, 0, 255); @@ -59,13 +61,16 @@ void onLoad() def.particleDef.angularSpeedDef.angularSpeed.random.floor = -1; def.particleDef.angularSpeedDef.angularSpeed.random.ceil = 1; */ + + //def.particleDef.linearAccelarationDef.linearAccelaration = Vector2<float>(0, 10); + def.particleDef.sizeOverTimeDef.enable = true; def.particleDef.sizeOverTimeDef.start = 1; - def.particleDef.sizeOverTimeDef.end = 0.1; + def.particleDef.sizeOverTimeDef.end = 0.5; - def.particleDef.lifeTimeDef.life.life = 4; + def.particleDef.lifeTimeDef.life.life = 0.5; p = new ParticleSystem(def); - p->setGraphic(tex); + p->setSprite(spr); } void onEvent(Event* e) @@ -87,7 +92,8 @@ void onDraw() Mouse* m = Mouse::get(); int x, y; m->getState(&x, &y); - p->render(x, y); + p->setPosition(x, y); + p->render(); shader->unuse(); } |