@Override
  public void update(double time) {
    if (redeployPrey && !anyActivePrey()) {
      // There are no prey active, so we have to redeploy
      redeployPrey();
    }

    nest.shape.getClosePrey().update(time, teleported);
    CloseObjectIterator i = nest.shape.getClosePrey().iterator();

    while (i.hasNext()) {
      PhysicalObjectDistance preyDistance = i.next();
      Prey nextPrey = (Prey) (preyDistance.getObject());
      double distance = nextPrey.getPosition().length();
      if (nextPrey.isEnabled() && distance < nestLimit) {
        if (distance == 0) {
          System.out.println("ERRO--- zero");
        }

        if (redeployPrey && currentRedeployCounter <= 0) nextPrey.setEnabled(false);
        else if (redeployPrey) {
          nextPrey.teleportTo(newPreyPosition());
          currentRedeployCounter--;
        } else nextPrey.teleportTo(newPreyPosition());

        numberOfFoodSuccessfullyForaged++;
      }
      i.updateCurrentDistance(distance);
    }

    for (Robot robot : robots) {
      PreyCarriedSensor sensor = (PreyCarriedSensor) robot.getSensorByType(PreyCarriedSensor.class);
      if (sensor.preyCarried() && robot.isInvolvedInCollison()) {
        PreyPickerActuator actuator =
            (PreyPickerActuator) robot.getActuatorByType(PreyPickerActuator.class);
        Prey preyToDrop = actuator.dropPrey();
        preyToDrop.teleportTo(newPreyPosition());
      }
    }
  }
 private void placePrey(Prey prey) {
   prey.teleportTo(newRandomPosition());
 }