var onParticleCreated = function(p) {
// create a three.js particle
var material = new THREE.ParticleCanvasMaterial( { program: SPARKS.CanvasShadersUtils.circles, blending:THREE.AdditiveBlending } );
material.color.setHSV(Math.random() * 0.5 + 0.2, 1, 0.2);
particle = new THREE.Particle( material );
particle.scale.x = particle.scale.y = 4;
group.add( particle );
// assign three.js particle to sparks.js position
particle.position = p.position;
// assign sparks.js target particle to three.js particle
p.target = particle;
};
var onParticleDead = function(particle) {
particle.target.visible = false; // is this a work around?
group.remove(particle.target);
};
sparksEmitter = new SPARKS.Emitter(new SPARKS.SteadyCounter(100));
sparksEmitter.addInitializer(new SPARKS.Position( new SPARKS.PointZone( new THREE.Vector3(0,0,0) ) ) );
sparksEmitter.addInitializer(new SPARKS.Lifetime(3,3));
sparksEmitter.addInitializer(new SPARKS.Velocity(new SPARKS.PointZone(new THREE.Vector3(0,0,100))));
sparksEmitter.addAction(new SPARKS.Age());
sparksEmitter.addAction(new SPARKS.Move());
sparksEmitter.addCallback("created", onParticleCreated);
sparksEmitter.addCallback("dead", onParticleDead);
sparksEmitter.start();
var onParticleCreated = function(p) {
// create a three.js particle
var material = new THREE.ParticleCanvasMaterial( { program: SPARKS.CanvasShadersUtils.circles, blending:THREE.AdditiveBlending } );
material.color.setHSV(Math.random() * 0.5 + 0.2, 1, 0.2);
particle = new THREE.Particle( material );
particle.scale.x = particle.scale.y = 4;
group.add( particle );
// assign three.js particle to sparks.js position
particle.position = p.position;
// assign sparks.js target particle to three.js particle
p.target = particle;
};
var onParticleDead = function(particle) {
particle.target.visible = false; // is this a work around?
group.remove(particle.target);
};
sparksEmitter = new SPARKS.Emitter(new SPARKS.SteadyCounter(200));
sparksEmitter.addInitializer(new SPARKS.Position( new SPARKS.CubeZone( new THREE.Vector3(0,0,0), 100, 100, 100 ) ) );
sparksEmitter.addInitializer(new SPARKS.Lifetime(3,3));
sparksEmitter.addInitializer(new SPARKS.Velocity(new SPARKS.PointZone(new THREE.Vector3(0,0,100))));
sparksEmitter.addAction(new SPARKS.Age());
sparksEmitter.addAction(new SPARKS.Move());
sparksEmitter.addCallback("created", onParticleCreated);
sparksEmitter.addCallback("dead", onParticleDead);
sparksEmitter.start();
var onParticleCreated = function(p) {
// create a three.js particle
var material = new THREE.ParticleCanvasMaterial( { program: SPARKS.CanvasShadersUtils.circles, blending:THREE.AdditiveBlending } );
material.color.setHSV(Math.random() * 0.5 + 0.2, 1, 0.2);
particle = new THREE.Particle( material );
particle.scale.x = particle.scale.y = 4;
group.add( particle );
// assign three.js particle to sparks.js position
particle.position = p.position;
// assign sparks.js target particle to three.js particle
p.target = particle;
};
var onParticleDead = function(particle) {
particle.target.visible = false; // is this a work around?
group.remove(particle.target);
};
sparksEmitter = new SPARKS.Emitter(new SPARKS.SteadyCounter(200));
sparksEmitter.addInitializer(new SPARKS.Position( new SPARKS.CubeZone( new THREE.Vector3(0,0,0), 100, 100, 100 ) ) );
sparksEmitter.addInitializer(new SPARKS.Lifetime(3,3));
sparksEmitter.addInitializer(new SPARKS.Velocity(new SPARKS.PointZone(new THREE.Vector3(0,0,100))));
sparksEmitter.addAction(new SPARKS.Age());
sparksEmitter.addAction(new SPARKS.Move());
sparksEmitter.addCallback("created", onParticleCreated);
sparksEmitter.addCallback("dead", onParticleDead);
sparksEmitter.start();