public Monster(Transform transform)
	{
		if(rand == null)
		{
			rand = new Random();
		}
		
		if(animation == null)
		{
			animation = new ArrayList<Texture>();
			
			animation.add(ResourceLoader.loadTexture("SSWVA1.png"));
			animation.add(ResourceLoader.loadTexture("SSWVB1.png"));
			animation.add(ResourceLoader.loadTexture("SSWVC1.png"));
			animation.add(ResourceLoader.loadTexture("SSWVD1.png"));
			
			animation.add(ResourceLoader.loadTexture("SSWVE0.png"));
			animation.add(ResourceLoader.loadTexture("SSWVF0.png"));
			animation.add(ResourceLoader.loadTexture("SSWVG0.png"));
			
			animation.add(ResourceLoader.loadTexture("SSWVH0.png"));
			animation.add(ResourceLoader.loadTexture("SSWVI0.png"));
			animation.add(ResourceLoader.loadTexture("SSWVJ0.png"));
			animation.add(ResourceLoader.loadTexture("SSWVK0.png"));
			animation.add(ResourceLoader.loadTexture("SSWVL0.png"));
			animation.add(ResourceLoader.loadTexture("SSWVM0.png"));
		}
		
		if(mesh == null)
		{
			mesh = new Mesh();
			
			float sizeY = 0.7f;
			float sizeX = (float)((double)sizeY / (1.9310344827586206896551724137931 * 2.0));
			
			float offsetX = 0.05f;
			float offsetY = 0.01f;
			
			float texMinX = -offsetX;
			float texMaxX = -1 - offsetX;
			float texMinY = -offsetY;
			float texMaxY = 1 - offsetY;
			
			Vertex[] verts = new Vertex[]{new Vertex(new Vector3f(-sizeX,0,0), new Vector2f(texMaxX,texMaxY)),
										  new Vertex(new Vector3f(-sizeX,sizeY,0), new Vector2f(texMaxX,texMinY)),
										  new Vertex(new Vector3f(sizeX,sizeY,0), new Vector2f(texMinX,texMinY)),
										  new Vertex(new Vector3f(sizeX,0,0), new Vector2f(texMinX,texMaxY))};
			
			int[] indices = new int[] {0,1,2,
					   				   0,2,3};
			
			mesh.addVertices(verts, indices);
		}
		
		this.transform = transform;
		this.material = new Material(animation.get(0));
		this.state = 0;
		this.canAttack = true;
		this.canLook = true;
		this.dead = false;
		this.deathTime = 0.0;
		this.health = MAX_HEALTH;
	}