diff options
Diffstat (limited to 'examples/particle_system/main.cpp')
-rw-r--r-- | examples/particle_system/main.cpp | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/examples/particle_system/main.cpp b/examples/particle_system/main.cpp index b337722..3fd96ce 100644 --- a/examples/particle_system/main.cpp +++ b/examples/particle_system/main.cpp @@ -38,39 +38,48 @@ const float Pi = 3.14f; void onLoad() { tex = Texture::createTexture("particle.png"); - spr = new Sprite(tex, Origin::BottomCenter); + spr = new Sprite(tex, Origin::MiddleCenter); shader = Shader::createShader(shader_code); ParticleSystemDef def; def.maxParticleCount = 30; def.emitterDef.emitRateDef.rate.rate = 0.01f; - def.emitterDef.forceDef.force.force = 50.f; + + def.emitterDef.forceDef.enableRandom = true; + def.emitterDef.forceDef.force.random.floor = 80; + def.emitterDef.forceDef.force.random.ceil = 150; + 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.floor = Vector2<float>(-2, 0); + def.emitterDef.positionDef.position.random.ceil = Vector2<float>(2, 0); def.emitterDef.directionDef.enableRandom = true; - def.emitterDef.directionDef.direction.random.floor = -Pi / 2 ; - def.emitterDef.directionDef.direction.random.ceil = -Pi / 2 ; - - def.particleDef.colorOverTimeDef.enable = true; - 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 = -1; - def.particleDef.angularSpeedDef.angularSpeed.random.ceil = 1; -*/ + def.emitterDef.directionDef.direction.random.floor = -Pi / 8 - Pi / 2 ; + def.emitterDef.directionDef.direction.random.ceil = Pi / 8 - Pi / 2 ; def.particleDef.linearAccelarationDef.linearAccelaration = Vector2<float>(0, 10); - def.particleDef.sizeOverTimeDef.enable = true; - def.particleDef.sizeOverTimeDef.start = 1; - def.particleDef.sizeOverTimeDef.end = 1; + def.particleDef.spritesDef.sprites.push_back(spr); + + def.particleDef.colorDef.color = Color(255, 40, 40, 255); + def.particleDef.colorDef.overTime.enable = true; + def.particleDef.colorDef.overTime.value.addColor(Color(255, 100, 0, 255), 0); + //def.particleDef.colorDef.overTime.value.addColor(Color(255, 255, 0, 100), 0.3); + //def.particleDef.colorDef.overTime.value.addColor(Color(0, 255, 100, 100), 0.5); + def.particleDef.colorDef.overTime.value.addColor(Color(255, 0, 0, 0), 1); + + def.particleDef.blendDef.additive = true; + + def.particleDef.lifeTimeDef.enableRandom = true; + def.particleDef.lifeTimeDef.life.random.floor = 0.5; + def.particleDef.lifeTimeDef.life.random.ceil = 1.5; + + def.particleDef.scaleDef.overTime.enable = true; + def.particleDef.scaleDef.overTime.value.addPoint(0, 1); + def.particleDef.scaleDef.overTime.value.addPoint(1, 0.7); - def.particleDef.lifeTimeDef.life.life = 3; p = new ParticleSystem(def); - p->setSprite(spr); + //p->addSprite(spr); } void onEvent(Event* e) |