VIPRA Documentation
Loading...
Searching...
No Matches
subcondition_elapsed_time.hpp
1#pragma once
2
3#include "vipra/vipra_behaviors/conditions/sub_condition.hpp"
4#include "vipra/vipra_behaviors/util/class_types.hpp"
5#include "vipra/vipra_behaviors/values/numeric_value.hpp"
6
7namespace VIPRA::Behaviors {
12class SubConditionElapsedTimeFromEvent {
13 NON_DEFAULT_CONSTRUCTIBLE(SubConditionElapsedTimeFromEvent)
14 COPYABLE(SubConditionElapsedTimeFromEvent)
15 MOVEABLE(SubConditionElapsedTimeFromEvent)
16 public:
17 SubConditionElapsedTimeFromEvent(Behaviors::NumericValue time, VIPRA::idx event)
18 : _event(event), _requiredTime(std::move(time))
19 {
20 }
21
22 void operator()(Simpack pack, const VIPRA::idxVec& peds,
23 std::vector<Target> const& /*unused*/, std::vector<bool>& met,
24 std::vector<bool> const& /*unused*/, BoolOp /*unused*/);
25
26 private:
27 VIPRA::idx _event{};
28 Behaviors::NumericValue _requiredTime;
29 VIPRA::time_s _startTime{};
30
31 // NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
32 static inline constexpr auto in_time_step(VIPRA::time_s currTime,
33 VIPRA::time_s checkTime,
34 VIPRA::delta_t deltaT) -> bool
35 {
36 const VIPRA::delta_t left = checkTime - deltaT;
37 const VIPRA::delta_t right = checkTime + deltaT;
38 return (currTime > left && currTime < right);
39 }
40};
41} // namespace VIPRA::Behaviors
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