From c72b19d54ea018be329bedd6b406ec1f4f11d00c Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 18 Nov 2022 12:18:27 +0300 Subject: [PATCH] Add bt::process helper for nodes without initialization & event processing --- libs/bt/include/psemek/bt/process.hpp | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 libs/bt/include/psemek/bt/process.hpp diff --git a/libs/bt/include/psemek/bt/process.hpp b/libs/bt/include/psemek/bt/process.hpp new file mode 100644 index 00000000..cdf0cf5d --- /dev/null +++ b/libs/bt/include/psemek/bt/process.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include + +namespace psemek::bt +{ + + template + struct process_node; + + template + struct process_node, ProcessFn> + : node> + { + using tree_type = tree; + using node_type = node; + using typename node_type::finished; + using typename node_type::status; + + process_node(ProcessFn && process_fn) + : process_fn_(std::move(process_fn)) + {} + + void start(Args ...) override + {} + + status update(Time dt, Args ... args) override + { + return process_fn_(dt, args...); + } + + bool event(Event const &, Args ...) override + { + return false; + } + + private: + ProcessFn process_fn_; + }; + + template + node_ptr process(ProcessFn && process_fn) + { + return std::make_unique>(std::move(process_fn)); + } + +}