Flecs v3.2
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
12template <typename ... Components>
13struct pipeline : entity {
14 pipeline(world_t *world, ecs_pipeline_desc_t *desc)
15 : entity(world)
16 {
17 m_id = ecs_pipeline_init(world, desc);
18
19 if (!m_id) {
20 ecs_abort(ECS_INVALID_PARAMETER, NULL);
21 }
22
23 if (desc->query.filter.terms_buffer) {
24 ecs_os_free(desc->query.filter.terms_buffer);
25 }
26 }
27};
28
30 return flecs::pipeline_builder<>(m_world);
31}
32
33template <typename Pipeline, if_not_t< is_enum<Pipeline>::value >>
35 return flecs::pipeline_builder<>(m_world, _::cpp_type<Pipeline>::id(m_world));
36}
37
38inline void world::set_pipeline(const flecs::entity pip) const {
39 return ecs_set_pipeline(m_world, pip);
40}
41
42template <typename Pipeline>
43inline void world::set_pipeline() const {
44 return ecs_set_pipeline(m_world, _::cpp_type<Pipeline>::id(m_world));
45}
46
48 return flecs::entity(m_world, ecs_get_pipeline(m_world));
49}
50
51inline bool world::progress(ecs_ftime_t delta_time) const {
52 return ecs_progress(m_world, delta_time);
53}
54
55inline void world::run_pipeline(const flecs::entity_t pip, ecs_ftime_t delta_time) const {
56 return ecs_run_pipeline(m_world, pip, delta_time);
57}
58
59template <typename Pipeline, if_not_t< is_enum<Pipeline>::value >>
60inline void world::run_pipeline(ecs_ftime_t delta_time) const {
61 return ecs_run_pipeline(m_world, _::cpp_type<Pipeline>::id(m_world), delta_time);
62}
63
64inline void world::set_time_scale(ecs_ftime_t mul) const {
65 ecs_set_time_scale(m_world, mul);
66}
67
68inline void world::set_target_fps(ecs_ftime_t target_fps) const {
69 ecs_set_target_fps(m_world, target_fps);
70}
71
72inline void world::reset_clock() const {
73 ecs_reset_clock(m_world);
74}
75
76inline void world::set_threads(int32_t threads) const {
77 ecs_set_threads(m_world, threads);
78}
79
80inline int32_t world::get_threads() const {
81 return ecs_get_stage_count(m_world);
82}
83
84inline void world::set_task_threads(int32_t task_threads) const {
85 ecs_set_task_threads(m_world, task_threads);
86}
87
88inline bool world::using_task_threads() const {
89 return ecs_using_task_threads(m_world);
90}
91
92}
#define ecs_abort(error_code,...)
Abort.
Definition log.h:342
FLECS_API void ecs_set_threads(ecs_world_t *world, int32_t threads)
Set number of worker threads.
FLECS_API void ecs_set_time_scale(ecs_world_t *world, ecs_ftime_t scale)
Set time scale.
FLECS_API void ecs_set_pipeline(ecs_world_t *world, ecs_entity_t pipeline)
Set a custom pipeline.
FLECS_API ecs_entity_t ecs_get_pipeline(const ecs_world_t *world)
Get the current pipeline.
FLECS_API bool ecs_progress(ecs_world_t *world, ecs_ftime_t delta_time)
Progress a world.
FLECS_API void ecs_reset_clock(ecs_world_t *world)
Reset world clock.
FLECS_API void ecs_run_pipeline(ecs_world_t *world, ecs_entity_t pipeline, ecs_ftime_t delta_time)
Run pipeline.
FLECS_API bool ecs_using_task_threads(ecs_world_t *world)
Returns true if task thread use have been requested.
FLECS_API void ecs_set_task_threads(ecs_world_t *world, int32_t task_threads)
Set number of worker task threads.
FLECS_API ecs_entity_t ecs_pipeline_init(ecs_world_t *world, const ecs_pipeline_desc_t *desc)
Create a custom pipeline.
int32_t ecs_get_stage_count(const ecs_world_t *world)
Get number of configured stages.
void set_target_fps(ecs_ftime_t target_fps) const
Set target FPS.
flecs::pipeline_builder pipeline() const
Create a new pipeline.
flecs::entity get_pipeline() const
Get pipeline.
void run_pipeline(const flecs::entity_t pip, ecs_ftime_t delta_time=0.0) const
Run pipeline.
void reset_clock() const
Reset simulation clock.
void set_threads(int32_t threads) const
Set number of threads.
void set_pipeline() const
Set pipeline.
int32_t get_threads() const
Set number of threads.
void set_time_scale(ecs_ftime_t mul) const
Set timescale.
void set_task_threads(int32_t task_threads) const
Set number of task threads.
bool progress(ecs_ftime_t delta_time=0.0) const
Progress world one tick.
bool using_task_threads() const
Returns true if task thread use has been requested.
#define ecs_ftime_t
Customizable precision for scalar time values.
Definition flecs.h:57
void ecs_set_target_fps(ecs_world_t *world, float fps)
Set target frames per second (FPS) for application.
Pipeline builder.
ecs_term_t * terms_buffer
For filters with lots of terms an outside array can be provided.
Definition flecs.h:1006
ecs_filter_desc_t filter
Filter for the query.
Definition flecs.h:1039
Entity.
Definition entity.hpp:30
Pipeline builder.
Definition builder.hpp:24
The world.
Definition world.hpp:132
ecs_ftime_t delta_time() const
Get delta_time.
Definition world.hpp:1032