VIPRA Documentation
Loading...
Searching...
No Matches
modifier_distance.hpp
1#pragma once
2
3#include <utility>
4
5#include "vipra/vipra_behaviors/definitions/sim_pack.hpp"
6#include "vipra/vipra_behaviors/util/class_types.hpp"
7#include "vipra/vipra_behaviors/values/numeric_value.hpp"
8
9namespace VIPRA::Behaviors {
14class ModifierDistance {
15 NON_DEFAULT_CONSTRUCTIBLE(ModifierDistance)
16 COPYABLE(ModifierDistance)
17 MOVEABLE(ModifierDistance)
18
19 public:
20 explicit ModifierDistance(NumericValue value) : _dist(std::move(value)) {}
21
31 auto operator()(Simpack pack, VIPRA::idx targetIdx, VIPRA::idx selfIdx) const -> bool
32 {
33 return pack.pedset.ped_coords(selfIdx).distance_to(
34 pack.pedset.ped_coords(targetIdx)) <= _dist.value(selfIdx);
35 }
36
37 private:
38 NumericValue _dist;
39};
40} // namespace VIPRA::Behaviors
auto operator()(Simpack pack, VIPRA::idx targetIdx, VIPRA::idx selfIdx) const -> bool
Returns if target is within distance.
Definition modifier_distance.hpp:31
Numeric Values hold runtime VIPRA::f_pnt values taken from Behaviors.
Definition numeric_value.hpp:21
Holds references to commonly used parameters for simpler passing.
Definition sim_pack.hpp:23