Flecs v3.2
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
builder.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#define ECS_EVENT_DESC_ID_COUNT_MAX (8)
9
10namespace flecs {
11
19 metric_builder(flecs::world_t *world, flecs::entity_t entity)
20 : m_world(world)
21 {
22 m_desc.entity = entity;
23 }
24
26
27 metric_builder& member(flecs::entity_t e) {
28 m_desc.member = e;
29 return *this;
30 }
31
32 metric_builder& member(const char *name);
33
34 template <typename T>
35 metric_builder& member(const char *name);
36
37 metric_builder& id(flecs::id_t the_id) {
38 m_desc.id = the_id;
39 return *this;
40 }
41
42 metric_builder& id(flecs::entity_t first, flecs::entity_t second) {
43 m_desc.id = ecs_pair(first, second);
44 return *this;
45 }
46
47 template <typename T>
49 return id(_::cpp_type<T>::id(m_world));
50 }
51
52 template <typename First>
53 metric_builder& id(flecs::entity_t second) {
54 return id(_::cpp_type<First>::id(m_world), second);
55 }
56
57 template <typename First, typename Second>
59 return id<First>(_::cpp_type<Second>::id(m_world));
60 }
61
62 metric_builder& targets(bool value = true) {
63 m_desc.targets = value;
64 return *this;
65 }
66
67 metric_builder& kind(flecs::entity_t the_kind) {
68 m_desc.kind = the_kind;
69 return *this;
70 }
71
72 template <typename Kind>
73 metric_builder& kind() {
74 return kind(_::cpp_type<Kind>::id(m_world));
75 }
76
77 metric_builder& brief(const char *b) {
78 m_desc.brief = b;
79 return *this;
80 }
81
82 operator flecs::entity();
83
84protected:
85 flecs::world_t *m_world;
86 ecs_metric_desc_t m_desc = {};
87 bool m_created = false;
88};
89
94}
Entity.
Definition entity.hpp:30
Class that wraps around a flecs::id_t.
Definition decl.hpp:27
Event builder interface.
Definition builder.hpp:18
The world.
Definition world.hpp:113