co_ecs 0.9.0
Cobalt ECS
Loading...
Searching...
No Matches
named_system.hpp
Go to the documentation of this file.
1#pragma once
2
4
5// Helper macro to construct a named system from a function
6#define CO_ECS_MAKE_NAMED_SYSTEM(func) \
7 std::make_unique<::co_ecs::named_system<decltype(std::function{ func })>>(func, #func)
8
9namespace co_ecs {
10
14template<typename F>
16public:
20 explicit named_system(F func, const char* name) : _func(std::move(func)), _name(name) {
21 }
22
28 std::unique_ptr<system_executor_interface> create_executor(registry& registry, void* user_context) override {
29 return std::make_unique<system_executor<F>>(registry, user_context, _func, _name);
30 }
31
32private:
33 F _func;
34 std::string_view _name;
35};
36
37} // namespace co_ecs
System implementation class for generic F function-like type with it's name.
Definition named_system.hpp:15
named_system(F func, const char *name)
Construct a new named system object.
Definition named_system.hpp:20
std::unique_ptr< system_executor_interface > create_executor(registry &registry, void *user_context) override
Create an executor object.
Definition named_system.hpp:28
Registry is a container for all our entities and components. Components are stored in continuously in...
Definition registry.hpp:13
System interface.
Definition system.hpp:38
Definition archetype.hpp:11
STL namespace.