Fix dt in behavior_tree::updater

This commit is contained in:
Nikita Lisitsa 2021-10-17 11:44:35 +03:00
parent 6e4db713d3
commit 73bf540967

View file

@ -111,8 +111,8 @@ namespace psemek::util
update_statistics update(Time dt) update_statistics update(Time dt)
{ {
activate();
fill_dt(dt); fill_dt(dt);
activate();
wake_up(dt); wake_up(dt);
update_statistics result; update_statistics result;
@ -139,6 +139,7 @@ namespace psemek::util
{ {
for (auto & n : new_) for (auto & n : new_)
{ {
n.elapsed = 0;
std::apply([&](Args ... args){ n.node.start(args...); }, n.args); std::apply([&](Args ... args){ n.node.start(args...); }, n.args);
active_.push_back(std::move(n)); active_.push_back(std::move(n));
} }
@ -195,9 +196,9 @@ namespace psemek::util
void start(Args ...) void start(Args ...)
{} {}
status update(Time, Args ... args) status update(Time dt, Args ... args)
{ {
actionFn(args...); actionFn(dt, args...);
return finished{true}; return finished{true};
} }
@ -444,6 +445,7 @@ namespace psemek::util
current_started = true; current_started = true;
} }
auto result = std::get<I>(children).update(dt, args...); auto result = std::get<I>(children).update(dt, args...);
dt = 0;
if (auto f = std::get_if<finished>(&result)) if (auto f = std::get_if<finished>(&result))
{ {
if (f->result) if (f->result)
@ -535,6 +537,7 @@ namespace psemek::util
current_started = true; current_started = true;
} }
auto result = std::get<I>(children).update(dt, args...); auto result = std::get<I>(children).update(dt, args...);
dt = 0;
if (auto f = std::get_if<finished>(&result)) if (auto f = std::get_if<finished>(&result))
{ {
if (!(f->result)) if (!(f->result))