#include #include #include #include MtState mt_initialize(char *app_name) { usz_t len_app_name = rr_measure_string(app_name); MtState state = malloc(sizeof(struct MtState)); state->app_name = malloc(len_app_name + 1); rr_memcopy(state->app_name, app_name, len_app_name + 1); state->tag_registry = mt_create_tag_registry(state); state->entity_registry = mt_create_entity_registry(); return state; } void mt_cleanup(MtState state) { mt_delete_entity_registry(&state->entity_registry); mt_delete_tag_registry(state->tag_registry); if(state->app_name != NULL) free(state->app_name); free(state); } /* TODO: This function should start a new thread with a worker system. void mt_start(MtState state) { } */ MtEntity mt_summon(MtState state) { return mt_create_entity(state, state->entity_registry.entity_id_counter++); } void mt_drop(MtEntity entity) { MtState state = entity->parent_state; mt_delete_entity_data(entity); mt_give_back_entity_pool_slot(&state->entity_registry.pool, state->entity_registry.pool.first_free); }