Flecs v4.0
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
impl.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include "builder.hpp"
9
10namespace flecs
11{
12
13struct observer final : entity
14{
15 using entity::entity;
16
17 explicit observer() : entity() { }
18
19 observer(flecs::world_t *world, ecs_observer_desc_t *desc, bool instanced)
20 {
21 if (!(desc->query.flags & EcsQueryIsInstanced)) {
22 ECS_BIT_COND(desc->query.flags, EcsQueryIsInstanced, instanced);
23 }
24
25 world_ = world;
26 id_ = ecs_observer_init(world, desc);
27 }
28
29 void ctx(void *ctx) {
30 ecs_observer_desc_t desc = {};
31 desc.entity = id_;
32 desc.ctx = ctx;
33 ecs_observer_init(world_, &desc);
34 }
35
36 void* ctx() const {
37 return ecs_observer_get(world_, id_)->ctx;
38 }
39
40 flecs::query<> query() const {
41 return flecs::query<>(ecs_observer_get(world_, id_)->query);
42 }
43};
44
45// Mixin implementation
47 return flecs::observer(world_, e);
48}
49
50template <typename... Comps, typename... Args>
51inline observer_builder<Comps...> world::observer(Args &&... args) const {
52 return flecs::observer_builder<Comps...>(world_, FLECS_FWD(args)...);
53}
54
55} // namespace flecs
flecs::observer observer(flecs::entity e) const
Observer builder.
ecs_entity_t ecs_observer_init(ecs_world_t *world, const ecs_observer_desc_t *desc)
Create observer.
const ecs_observer_t * ecs_observer_get(const ecs_world_t *world, ecs_entity_t observer)
Get observer object.
#define EcsQueryIsInstanced
Query iteration is always instanced.
Definition flecs.h:1119
Observer builder.
Used with ecs_observer_init().
Definition flecs.h:1212
ecs_entity_t entity
Existing entity to associate with observer (optional)
Definition flecs.h:1217
void * ctx
User context to pass to callback.
Definition flecs.h:1241
ecs_query_desc_t query
Query for observer.
Definition flecs.h:1220
void * ctx
Observer context.
Definition flecs.h:810
ecs_flags32_t flags
Flags for enabling query features.
Definition flecs.h:1152
Entity.
Definition entity.hpp:30
Observer builder.
Definition decl.hpp:21
The world.
Definition world.hpp:137