Created
August 30, 2024 23:02
-
-
Save waldnercharles/d9715e1c5da5ec007e7be1dac0925611 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
#include <pico_ecs.h> | |
// -- System API -- | |
template<ecs_system_fn F> | |
inline ecs_id_t ecs_system; | |
template<ecs_system_fn F, typename... Cs> | |
ecs_id_t ecs_register_system(ecs_t *ecs, void *udata) | |
{ | |
ecs_id_t id = ecs_system<F> = ecs_register_system(ecs, F, NULL, NULL, udata); | |
(ecs_require_component<Cs>(ecs, id), ...); | |
return id; | |
} | |
template<typename T> | |
inline void ecs_require_component(ecs_t *ecs, ecs_id_t sys_id) | |
{ | |
ecs_require_component(ecs, sys_id, ecs_component<T>); | |
} | |
template<auto F> | |
inline ecs_ret_t ecs_update_system(ecs_t *ecs, ecs_dt_t dt) | |
{ | |
const ecs_id_t system_id = ecs_system<F>; | |
return ecs_update_system(ecs, system_id, dt); | |
} | |
// -- Component API -- | |
template<typename T> | |
inline ecs_id_t ecs_component; | |
template<typename T> | |
inline ecs_id_t ecs_register_component(ecs_t *ecs, ecs_constructor_fn constructor = NULL, ecs_destructor_fn destructor = NULL) | |
{ | |
return ecs_component<T> = ecs_register_component(ecs, sizeof(T), constructor, destructor); | |
} | |
// -- Entity API -- | |
template<typename T> | |
inline T *ecs_add(ecs_t *ecs, ecs_id_t entity_id, void *args = NULL) | |
{ | |
return (T *)ecs_add(ecs, entity_id, ecs_component<T>, args); | |
} | |
template<typename T> | |
inline T *ecs_get(ecs_t *ecs, ecs_id_t entity_id) | |
{ | |
return (T *)ecs_get(ecs, entity_id, ecs_component<T>); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment