Last active
April 19, 2020 21:45
-
-
Save SanderMertens/997c5b6832648ffa5f1c544a70fa608c to your computer and use it in GitHub Desktop.
This file contains 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
/* -- Create single entity -- */ | |
FLECS_EXPORT | |
ecs_entity_t ecs_new_w_entity( | |
ecs_world_t *world, | |
ecs_entity_t component); | |
FLECS_EXPORT | |
ecs_entity_t ecs_new_w_type( | |
ecs_world_t *world, | |
ecs_type_t type); | |
#define ecs_new(world, type)\ | |
ecs_new_type(world, T##type) | |
/* -- Bulk create entities -- */ | |
FLECS_EXPORT | |
ecs_entity_t ecs_bulk_new_w_entity( | |
ecs_world_t *world, | |
ecs_entity_t component, | |
int32_t count, | |
void** data); | |
FLECS_EXPORT | |
ecs_entity_t ecs_bulk_new_w_type( | |
ecs_world_t *world, | |
ecs_type_t type, | |
int32_t count, | |
void** data); | |
#define ecs_bulk_new(world, type, count)\ | |
ecs_bulk_new_w_type(world, T##type, count) | |
/* -- Add components -- */ | |
FLECS_EXPORT | |
void ecs_add_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
FLECS_EXPORT | |
void ecs_add_type( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_type_t type); | |
#define ecs_add(world, entity, type)\ | |
ecs_add_type(world, entity, T##type) | |
/* -- Remove components -- */ | |
FLECS_EXPORT | |
void ecs_remove_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
FLECS_EXPORT | |
void ecs_remove_type( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_type_t type); | |
#define ecs_remove(world, entity, type)\ | |
ecs_remove_type(world, entity, T##type) | |
/* -- Bulk add -- */ | |
FLECS_EXPORT | |
void ecs_bulk_add_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component, | |
ecs_filter_t *filter); | |
FLECS_EXPORT | |
void ecs_bulk_add_type( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_type_t type, | |
ecs_filter_t *filter); | |
#define ecs_bulk_add(world, entity, type, filter)\ | |
ecs_bulk_add_type(world, entity, T##type, filter) | |
/* -- Bulk remove -- */ | |
FLECS_EXPORT | |
void ecs_bulk_remove_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component, | |
ecs_filter_t *filter); | |
FLECS_EXPORT | |
void ecs_bulk_remove_type( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_type_t type, | |
ecs_filter_t *filter); | |
#define ecs_bulk_remove_world, entity, type, filter)\ | |
ecs_bulk_remove_type(world, entity, T##type, filter) | |
/* -- Delete & bulk delete -- */ | |
FLECS_EXPORT | |
void ecs_delete( | |
ecs_world_t *world, | |
ecs_entity_t entity); | |
FLECS_EXPORT | |
void ecs_bulk_delete( | |
ecs_world_t *world, | |
const ecs_filter_t *filter); | |
/* -- Copy -- */ | |
FLECS_EXPORT | |
ecs_entity_t ecs_copy( | |
ecs_world_t *world, | |
ecs_entity_t dst, | |
ecs_entity_t src, | |
bool copy_value); | |
/* -- Get -- */ | |
FLECS_EXPORT | |
const void* ecs_get_ptr_w_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
#define ecs_get_ptr(world, entity, component)\ | |
(component*)ecs_get_ptr_w_entity(world, entity, E##component) | |
#define ecs_get(world, entity, component)\ | |
(*(component*)ecs_get_ptr_w_entity(world, entity, E##component)) | |
/* -- Get cached -- */ | |
FLECS_EXPORT | |
void* ecs_get_cached_ptr_w_entity( | |
ecs_world_t *world, | |
ecs_cached_ptr_t *cached_ptr, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
#define ecs_get_cached_ptr(world, cached_ptr, entity, component)\ | |
(component*)ecs_get_cached_ptr_w_entity(world, cached_ptr, entity, E##component) | |
/* -- Get mutable -- */ | |
FLECS_EXPORT | |
void* ecs_get_mutable_w_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component, | |
size_t size, | |
bool *is_added); | |
#define ecs_get_mutable(world, entity, component, is_added)\ | |
ecs_get_mutable_w_entity(world, entity, ecs_entity(component), sizeof(component), is_added) | |
/* -- Modified -- */ | |
FLECS_EXPORT | |
void ecs_modified_w_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
#define ecs_modified(world, entity, component)\ | |
ecs_modified_w_entity(world, entity, ecs_entity(component)) | |
/* -- Set -- */ | |
FLECS_EXPORT | |
ecs_entity_t ecs_set_ptr_w_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component, | |
size_t size, | |
const void *ptr); | |
#define ecs_set_ptr(world, entity, component, ptr)\ | |
ecs_set_ptr_w_entity(world, entity, ecs_entity(component), sizeof(component), ptr) | |
/* Conditionally skip macro's as compound literals are not supported in C89 */ | |
#ifndef __BAKE_LEGACY__ | |
#define ecs_set(world, entity, component, ...)\ | |
ecs_set_ptr_w_entity(world, entity, ecs_entity(component), sizeof(component), &(component)__VA_ARGS__) | |
#endif | |
/* -- Has -- */ | |
FLECS_EXPORT | |
bool ecs_has_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
FLECS_EXPORT | |
bool ecs_has_type( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
#define ecs_has(world, entity, type)\ | |
ecs_has_type(world, entity, T##type) | |
/* -- Has owned -- */ | |
FLECS_EXPORT | |
bool ecs_has_owned_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component, | |
bool owned); | |
FLECS_EXPORT | |
bool ecs_has_owned_type( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component, | |
bool owned); | |
#define ecs_has_owned(world, entity, type, owned)\ | |
ecs_has_type(world, entity, T##type, owned) | |
/* -- Entity info -- */ | |
FLECS_EXPORT | |
ecs_type_t ecs_get_type( | |
ecs_world_t *world, | |
ecs_entity_t entity); | |
FLECS_EXPORT | |
const char* ecs_get_name( | |
ecs_world_t *world, | |
ecs_entity_t entity); | |
FLECS_EXPORT | |
bool ecs_get_watched( | |
ecs_world_t *world, | |
ecs_entity_t entity); | |
/* -- Count entities -- */ | |
FLECS_EXPORT | |
int32_t _ecs_count( | |
ecs_world_t *world, | |
ecs_type_t type); | |
#define ecs_count(world, type) _ecs_count(world, ecs_type(type)) | |
FLECS_EXPORT | |
int32_t ecs_count_w_filter( | |
ecs_world_t *world, | |
const ecs_filter_t *filter); | |
/* -- Lookup entities by name -- */ | |
FLECS_EXPORT | |
ecs_entity_t ecs_lookup( | |
ecs_world_t *world, | |
const char *id); | |
FLECS_EXPORT | |
ecs_entity_t ecs_lookup_child( | |
ecs_world_t *world, | |
const char *id); | |
/* -- Get parent -- */ | |
FLECS_EXPORT | |
ecs_entity_t _ecs_get_parent_w_entity( | |
ecs_world_t *world, | |
ecs_entity_t entity, | |
ecs_entity_t component); | |
#define ecs_get_parent(world, entity, component)\ | |
_ecs_get_parent_w_entity(world, entity, ecs_entity(component)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment