@Override
    public float calculateDesire() {
        float desire = 0f;

        Actor actor = ai.getActor();
        if (actor == null) {
            return desire;
        }


        newTarget = registry.getPlaceableManager().getClosestActivated(actor.getCenterPoint());
        if (newTarget == null) {
            return desire;
        }

        //figure out the distance between player and mob
        int actorX = ai.getActor().getMapX();
        int placeableX = newTarget.getMapX();
        int distance = Math.abs(placeableX - actorX);

        //see if the mob needs to be attack a placeable
        //closer the player is, the more the mob wants to attack
        if (distance >= MAX_DISTANCE) {
            desire = 0.01f;
        } else {
            desire = 1.0f - ((float) distance / (float) MAX_DISTANCE);
        }

        desire *= bias;
        desire = validateDesire(desire);
        
        ai.getActor().setDebugInfo(ai.getActor().getDebugInfo() + "Placeable (" + ((int) desire * 100) + ") - " + newTarget.toString() + "|");

        return desire;
    }