VIPRA Documentation
Loading...
Searching...
No Matches
subcondition_exists.hpp
1#pragma once
2
3#include "vipra/vipra_behaviors/conditions/sub_condition.hpp"
4#include "vipra/vipra_behaviors/conditions/subconditions/subcondition_attribute.hpp"
5#include "vipra/vipra_behaviors/targets/target_modifier.hpp"
6#include "vipra/vipra_behaviors/util/class_types.hpp"
7
8namespace VIPRA::Behaviors {
13class SubConditionExists {
14 NON_DEFAULT_CONSTRUCTIBLE(SubConditionExists)
15 COPYABLE(SubConditionExists)
16 MOVEABLE(SubConditionExists)
17
18 public:
19 explicit SubConditionExists(TargetModifier modifier, SubConditionAttribute condition)
20 : _modifier(std::move(modifier)), _attributeCond(condition)
21 {
22 }
23
24 void operator()(Simpack pack, const VIPRA::idxVec& peds,
25 std::vector<Target> const& /*unused*/, std::vector<bool>& met,
26 std::vector<bool> const& prevMet, BoolOp oper) const;
27
28 private:
29 // TODO(rolland): add in group type, currently just checks pedestrians
30 TargetModifier _modifier;
31 SubConditionAttribute _attributeCond;
32
33 size_t _count = 0;
34};
35} // namespace VIPRA::Behaviors
SubCondition for target attribute to equal a value.
Definition subcondition_attribute.hpp:14
Modifies who can be a target for an action, by distance, direction, etc.
Definition target_modifier.hpp:17
Holds references to commonly used parameters for simpler passing.
Definition sim_pack.hpp:23