aboutsummaryrefslogtreecommitdiff
path: root/examples/particle_system/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/particle_system/main.cpp')
-rw-r--r--examples/particle_system/main.cpp49
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)