

function Particle(){
	this.pos = new Vector3(0,0,0);
	this.dir = new Vector3(0,0,0);
	this.animation = saFireball;
	this.age = 0;
}


function Feuerwerk(numParticles, position){
	this.particles = new Array();
	this.position = position;
	//this.position.z = 0;
	this.layer = 1000;
	
	for(var i = 0; i < numParticles; i++){
		var particle = new Particle();
		particle.dir.x = Math.random()*2 - 1;
		particle.dir.y = Math.random();
		//particle.dir.y = Math.random()*2 - 1;
		particle.dir.z = Math.random()*2 - 1;
		particle.dir.z /= 4;
		particle.dir = particle.dir.getNormalized();
		
		this.particles.push(particle);
	}
}

Feuerwerk.prototype = new SceneNode();

Feuerwerk.prototype.addTime = function(time){
	for(var i = 0; i < this.particles.length; i++){
		var particle = this.particles[i];
		particle.animation.addTime(time);
		particle.pos = particle.pos.addVector(particle.dir.mulScalar(time*500));
		particle.dir.y -= time;
		particle.age += time;
	}
	
	for(var i = this.particles.length-1; i>= 0; i--){
		var particle = this.particles[i];
		if(particle.age > 4){
			this.particles.splice(i,1);
		}
	}
}

Feuerwerk.prototype.draw = function(camera){
	
	for(var i = 0; i < this.particles.length; i++){
		var particle = this.particles[i];
		var a = particle.animation;
		var pos = this.position.addVector(particle.pos);
		var x = pos.x - (camera.position.x - camera.getWidth());
		var y = 500 + pos.z;
		var sy = y;
		y = y - a.sprite.parts[a.getIndex()].height - pos.y;
		
		var length = Math.sqrt(particle.dir.x*particle.dir.x + 
			particle.dir.y*particle.dir.y);
		var dx = particle.dir.x / length;
		var dy = particle.dir.y / length;
		
		var angle = 0;
		if(dy > 0){
			angle = Math.acos(dx);
		}else{
			angle = Math.PI + Math.acos(-dx);
		}
		context.save();
		context.translate(x,y);
		context.translate(20,40);
		//context.translate(-100,-100);
		context.rotate(-angle);
		context.translate(-50,-50);
		a.sprite.draw(a.getIndex(), 0, 0, 1, 1);
		context.restore();
	}
	
}







