public void update(int delta, boolean beat, int bpm) {
		this.bpm = bpm;

		if (beat) {
			altBeat++;

			if (game.getCurrentLevel().getLevelNumber() > 0) {
				xPosition++;
			}

			if (altBeat % 4 == 0)
				setupLavaGlow = true;
		}

		ArrayList<TileEffect> toRemove = new ArrayList<TileEffect>();
		for (TileEffect t : tileEffectList) {
			t.update(delta);
			if (t.hasExpired()) {
				toRemove.add(t);
				Tile tile = tileMap.get(new Point(t.getX(), t.getY()));
				tile.setCurrentlyHot(false);
			}
		}
		for (ProjectileEmitter emitter : projectileEmitters) {
			emitter.update(delta, beat, bpm);
		}
		Iterator<Projectile> projectileIterator = projectiles.iterator();
		while (projectileIterator.hasNext()) {
			Projectile projectile = projectileIterator.next();
			if (projectile.hasExpired()) {
				projectileIterator.remove();
			} else {
				projectile.update(delta);
			}
		}

		tileEffectList.removeAll(toRemove);
	}