Skip to content
Flecs v4.1
builder.hpp
Go to the documentation of this file.
1/**
2 * @file addons/cpp/mixins/system/builder.hpp
3 * @brief System builder.
4 */
5
6#pragma once
7
10#include "builder_i.hpp"
11
12namespace flecs {
13namespace _ {
14 template <typename ... Components>
15 using system_builder_base = builder<
16 system, ecs_system_desc_t, system_builder<Components...>,
17 system_builder_i, Components ...>;
18}
19
20/** System builder.
21 *
22 * @ingroup cpp_addons_systems
23 */
24template <typename ... Components>
25struct system_builder final : _::system_builder_base<Components...> {
26 system_builder(flecs::world_t* world, const char *name = nullptr)
27 : _::system_builder_base<Components...>(world, name)
28 {
29 _::populate_signature<Components...>(world, this);
30
31#ifdef FLECS_PIPELINE
32 this->desc_.phase = flecs::OnUpdate;
33#endif
34 }
35
36 template <typename Func>
37 system each(Func&& func);
38
39private:
40 template <typename ... CallbackComponents, typename Func>
41 system each_callback(_::arg_list<CallbackComponents...>, Func&& func);
42
43 template <typename ... CallbackComponents>
44 void prepend_each_callback_signature();
45};
46
47}
Compile-time utilities to inspect properties of functions.
struct ecs_system_desc_t ecs_system_desc_t
Use with ecs_system_init() and ecs_system_update().
ecs_world_t world_t
World type.
Definition c_types.hpp:18
Int to enum.
Definition component.hpp:18
System.
Definition impl.hpp:78
Base & name(const char *name)
Specify the value of the identifier by name.
Definition builder_i.hpp:58
The world.
Definition world.hpp:129
flecs::system system(flecs::entity e) const
Upcast an entity to a system.
System builder interface.
Builder base class.