VIPRA Documentation
Loading...
Searching...
No Matches
subcondition_in_location.hpp
1#pragma once
2
3#include "vipra/vipra_behaviors/attributes/attributes.hpp"
4#include "vipra/vipra_behaviors/conditions/sub_condition.hpp"
5#include "vipra/vipra_behaviors/util/class_types.hpp"
6
7namespace VIPRA::Behaviors {
12class SubConditionInLocation {
13 NON_DEFAULT_CONSTRUCTIBLE(SubConditionInLocation)
14 COPYABLE(SubConditionInLocation)
15 MOVEABLE(SubConditionInLocation)
16
17 public:
18 explicit SubConditionInLocation(VIPRA::idx location) : _location(location) {}
19
20 void operator()(Simpack pack, const VIPRA::idxVec& peds,
21 std::vector<Target> const& targets, std::vector<bool>& met,
22 std::vector<bool> const& /*unused*/, BoolOp /*unused*/) const
23 {
24 for ( auto idx : peds ) {
25 auto const& coords = pack.pedset.ped_coords(targets[idx].targetIdx);
26 met[idx] = pack.context.locations[_location].is_point_inside(coords);
27 }
28 }
29
30 private:
31 VIPRA::idx _location;
32};
33} // namespace VIPRA::Behaviors
Holds references to commonly used parameters for simpler passing.
Definition sim_pack.hpp:23