Flecs v4.0
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
8namespace flecs {
9
20 app_builder(flecs::world_t *world)
21 : world_(world)
22 , desc_{}
23 {
25 desc_.target_fps = stats->target_fps;
26 ecs_ftime_t t_zero = 0.0;
27 if (ECS_EQ(desc_.target_fps, t_zero)) {
28 desc_.target_fps = 60;
29 }
30 }
31
32 app_builder& target_fps(ecs_ftime_t value) {
33 desc_.target_fps = value;
34 return *this;
35 }
36
37 app_builder& delta_time(ecs_ftime_t value) {
38 desc_.delta_time = value;
39 return *this;
40 }
41
42 app_builder& threads(int32_t value) {
43 desc_.threads = value;
44 return *this;
45 }
46
47 app_builder& frames(int32_t value) {
48 desc_.frames = value;
49 return *this;
50 }
51
52 app_builder& enable_rest(uint16_t port = 0) {
53 desc_.enable_rest = true;
54 desc_.port = port;
55 return *this;
56 }
57
58 app_builder& enable_stats(bool value = true) {
59 desc_.enable_stats = value;
60 return *this;
61 }
62
64 desc_.init = value;
65 return *this;
66 }
67
68 app_builder& ctx(void *value) {
69 desc_.ctx = value;
70 return *this;
71 }
72
73 int run() {
74 int result = ecs_app_run(world_, &desc_);
75 if (ecs_should_quit(world_)) {
76 // Only free world if quit flag is set. This ensures that we won't
77 // try to cleanup the world if the app is used in an environment
78 // that takes over the main loop, like with emscripten.
79 if (!flecs_poly_release(world_)) {
80 ecs_fini(world_);
81 }
82 }
83 return result;
84 }
85
86private:
87 flecs::world_t *world_;
88 ecs_app_desc_t desc_;
89};
90
93}
int(* ecs_app_init_action_t)(ecs_world_t *world)
Callback type for init action.
Definition app.h:33
FLECS_API int ecs_app_run(ecs_world_t *world, ecs_app_desc_t *desc)
Run application.
#define ecs_ftime_t
Customizable precision for scalar time values.
Definition flecs.h:59
int ecs_fini(ecs_world_t *world)
Delete a world.
bool ecs_should_quit(const ecs_world_t *world)
Return whether a quit has been requested.
const ecs_world_info_t * ecs_get_world_info(const ecs_world_t *world)
Get world info.
Used with ecs_app_run().
Definition app.h:37
uint16_t port
HTTP port used by REST API.
Definition app.h:44
bool enable_stats
Periodically collect statistics.
Definition app.h:43
ecs_ftime_t target_fps
Target FPS.
Definition app.h:38
ecs_ftime_t delta_time
Frame time increment (0 for measured values)
Definition app.h:39
ecs_app_init_action_t init
If set, function is ran before starting the main loop.
Definition app.h:46
int32_t frames
Number of frames to run (0 for infinite)
Definition app.h:41
void * ctx
Reserved for custom run/frame actions.
Definition app.h:49
bool enable_rest
Enables ECS access over HTTP, necessary for explorer.
Definition app.h:42
int32_t threads
Number of threads.
Definition app.h:40
Type that contains information about the world.
Definition flecs.h:1365
App builder interface.
Definition builder.hpp:19
The world.
Definition world.hpp:137