14struct SelectorExactlyN {
15 NON_DEFAULT_CONSTRUCTIBLE(SelectorExactlyN)
16 COPYABLE(SelectorExactlyN)
17 MOVEABLE(SelectorExactlyN)
19 explicit SelectorExactlyN(
NumericValue count) : selectCount(std::move(count)) {}
22 auto operator()(
const VIPRA::idxVec& ,
const VIPRA::idxVec& group,
25 auto groupPeds = group;
27 auto pedCnt =
static_cast<VIPRA::size
>(std::round(selectCount.value(0)));
30 if ( pedCnt > group.size() ) {
32 pedCnt = group.size();
37 std::shuffle(groupPeds.begin(), groupPeds.end(), pack.context.engine);
38 groupPeds.resize(pedCnt);
40 return {starved, groupPeds};
static VIPRA_INLINE void debug(fmt::format_string< param_ts... > message, param_ts &&... params)
Calls the provided Logger with Level DEBUG.
Definition logging.hpp:85