Flecs v4.1
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
script_async.h
Go to the documentation of this file.
1
6#ifdef FLECS_SCRIPT_ASYNC
7
8#ifndef FLECS_SCRIPT
9#define FLECS_SCRIPT
10#endif
11
20#ifndef FLECS_SCRIPT_ASYNC_H
21#define FLECS_SCRIPT_ASYNC_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27FLECS_API
28extern ECS_COMPONENT_DECLARE(EcsScriptTask);
29
36typedef struct ecs_script_future_t ecs_script_future_t;
37
44typedef struct ecs_script_task_t ecs_script_task_t;
45
52typedef void(*ecs_async_function_callback_t)(
53 const ecs_function_ctx_t *ctx,
54 int32_t argc,
55 const ecs_value_t *argv,
56 ecs_script_future_t *future);
57
63typedef void(*ecs_async_function_cancel_t)(
64 const ecs_function_ctx_t *ctx,
65 ecs_script_future_t *future);
66
84typedef struct EcsScriptTask {
85 ecs_vec_t tasks;
86} EcsScriptTask;
87
89typedef enum ecs_script_task_status_t {
90 EcsScriptTaskPending,
91 EcsScriptTaskDone,
92 EcsScriptTaskError,
93 EcsScriptTaskCancelled
94} ecs_script_task_status_t;
95
97typedef enum ecs_script_task_loop_t {
98 EcsScriptTaskLoopOnce,
99 EcsScriptTaskLoopCount,
100 EcsScriptTaskLoopForever
101} ecs_script_task_loop_t;
102
104typedef struct ecs_script_task_desc_t {
105 ecs_entity_t entity;
110 void *ctx;
111 ecs_ctx_free_t ctx_free;
112 ecs_script_task_loop_t loop;
113 int32_t iterations;
115} ecs_script_task_desc_t;
116
130FLECS_API
131ecs_script_task_t* ecs_script_task_new(
132 const ecs_script_t *script,
133 const ecs_script_task_desc_t *desc);
134
155FLECS_API
156ecs_script_task_status_t ecs_script_task_resume(
157 ecs_script_task_t *task,
159
170FLECS_API
171bool ecs_script_task_is_ready(
172 const ecs_script_task_t *task);
173
182FLECS_API
183void ecs_script_task_cancel(
184 ecs_script_task_t *task);
185
192FLECS_API
193void ecs_script_task_free(
194 ecs_script_task_t *task);
195
209FLECS_API
210int ecs_script_future_resolve(
211 ecs_script_future_t *future,
212 const ecs_value_t *value);
213
226FLECS_API
227int ecs_script_future_reject(
228 ecs_script_future_t *future,
229 const char *error);
230
259FLECS_API
260int ecs_script_future_reject_id(
261 ecs_script_future_t *future,
262 ecs_entity_t error,
263 const char *msg);
264
276FLECS_API
277bool ecs_script_future_is_cancelled(
278 const ecs_script_future_t *future);
279
293FLECS_API
294ecs_script_future_t* ecs_script_future_retain(
295 ecs_script_future_t *future);
296
305FLECS_API
306void ecs_script_future_release(
307 ecs_script_future_t *future);
308
320FLECS_API
321void ecs_script_future_set_ctx(
322 ecs_script_future_t *future,
323 void *ctx,
324 ecs_ctx_free_t ctx_free);
325
332FLECS_API
333void* ecs_script_future_get_ctx(
334 const ecs_script_future_t *future);
335
337typedef struct ecs_async_function_desc_t {
339 const char *name;
340
342 ecs_entity_t parent;
343
345 ecs_script_parameter_t params[FLECS_SCRIPT_FUNCTION_ARGS_MAX];
346
348 ecs_entity_t return_type;
349
352 ecs_async_function_callback_t callback;
353
356 ecs_async_function_cancel_t cancel;
357
359 void *ctx;
360} ecs_async_function_desc_t;
361
376FLECS_API
377ecs_entity_t ecs_async_function_init(
378 ecs_world_t *world,
379 const ecs_async_function_desc_t *desc);
380
381#define ecs_async_function(world, ...)\
382 ecs_async_function_init(world, &(ecs_async_function_desc_t)__VA_ARGS__)
383
384#ifdef __cplusplus
385}
386#endif
387
388#endif
389
392#endif
ecs_id_t ecs_entity_t
An entity identifier.
Definition flecs.h:394
struct ecs_world_t ecs_world_t
A world is the container for all ECS data and supporting features.
Definition flecs.h:438
script_builder script(const char *name=nullptr) const
Build a script.
Definition mixin.inl:31
#define ECS_COMPONENT_DECLARE(id)
Forward declare a component.
Definition flecs_c.h:65
void(* ecs_ctx_free_t)(void *ctx)
Function to clean up context data.
Definition flecs.h:659
Script function context.
Definition script.h:141
Used to capture error output from script evaluation.
Definition script.h:183
Function argument type.
Definition script.h:164
Script object.
Definition script.h:116
Value of a dynamic type.
Definition flecs.h:1067