18 DEFAULT_CONSTRUCTIBLE(
Action)
23 void initialize(
auto pack)
25 if ( _condition ) _condition->initialize(pack);
26 if ( _duration ) _duration->resize(pack.pedset.num_pedestrians());
29 void perform_action(
Simpack pack, VIPRA::idxVec& peds,
30 std::vector<Target>
const& targets);
31 void perform_action(
Simpack pack,
const VIPRA::idxVec& peds,
32 std::vector<bool>
const& conditionMet,
33 std::vector<Target>
const& targets);
35 void add_condition(
Condition const& cond) { _condition = cond; }
36 void add_atom(Atom&& atom) { _atoms.push_back(atom); }
43 [[nodiscard]]
auto has_condition() ->
bool {
return _condition.has_value(); }
44 [[nodiscard]]
auto condition() -> std::optional<Condition>& {
return _condition; }
46 [[nodiscard]]
auto has_duration() ->
bool {
return _duration.has_value(); }
47 [[nodiscard]]
auto duration() -> std::optional<TimedLatchCollection>&
52 [[nodiscard]]
auto has_target() ->
bool {
return _targets.has_value(); }
53 [[nodiscard]]
auto targets() -> std::optional<TargetSelector>& {
return _targets; }
56 std::vector<Atom> _atoms;
57 std::optional<Condition> _condition;
58 std::optional<TimedLatchCollection> _duration;
59 std::optional<TargetSelector> _targets;