Ejemplo n.º 1
0
Particle ParticleEmitter::emit () {

	int mass = randomness ? randBetween(1, 10) : 1;

	Particle particle = Particle(this->location, mass);
	Vector3 emitDirection = direction;

	// Add random variation to emit direction
	if (randomness) {
		int offsetSign = randBetween(0, 1);
		int spread = randBetween(0, emitSpread);
		emitDirection.x += (offsetSign == 0 ? spread : -spread);
		spread = randBetween(1, emitSpread);
		offsetSign = randBetween(0, 1);
		emitDirection.y += (offsetSign == 0 ? spread : -spread);
		spread = randBetween(1, emitSpread);
		offsetSign = randBetween(0, 1);
		emitDirection.z += (offsetSign == 0 ? spread : -spread);
	}

	// Add random variation to emit velocity
	double velocity = Particle::initialVelocity;
	//velocity += randBetween(-5, 5);

	Vector3 emitForce = emitDirection.normalise().mult(velocity);
	particle.applyForce(emitForce);
	return particle;
}
Ejemplo n.º 2
0
void Emitter::createParticle()
{
	float x;
	float y;

	Particle particle = Particle(boundary, location, 10);

	//if (leftParticles)
	//{
	//	x = vx(generator);
	//	y = vy(generator);
	//	leftParticles = false;
	//}
	//else
	//{
	x = explosionVX(generator);
	y = explosionVY(generator);
	//	leftParticles = true;
	//}
	particle.setVelocity(sf::Vector2f(x, y));
	sf::Sprite sprite = particle.getSprite();
	sprite.setTexture(texture1);
	sprite.setPosition(particle.getLocation());
	particle.applyForce(sf::Vector2f(0, 10000));
	particle.setSprite(sprite);
	this->particles.push_front(particle);
}