public void compute() {
		// Find nearest enemy
		Opponent nearest = null;
		float nearestDistance = 9999999f;
		Opponent[] opponents = getOpponents();
		for (int i = 0; i<opponents.length; i++) {
			float distance = Vector3D.subtract(opponents[i].getLocation(), getLocation()).getMagnitude();
			if (distance < nearestDistance) {
				nearest = opponents[i];
				nearestDistance = distance;
			}
		}
		// Fire at nearest enemy as continuously as gun heating will allow.
		if (getGunCurrentTemp() < getGunUnjamTemp() && nearest != null)
			fire((float)getLocation().orientTo(nearest.getLocation()));
		// Might as well wait until the gun can be reloaded
		Utility.delay(getGunReloadDurationMillis());
	}