#include "world.h" #include "platform.h" #include "error.h" void init_world(World* world) { world->entity_count = 0; } Entity new_entity(World* world) { Entity e; #if DEBUG if ( world->entity_count >= max_entities && world->recycle_bin_count == 0 ) { platform_err("Too many entities.\n"); platform_abort(error_out_of_memory); } #endif e = world->recycle_bin_count > 0 ? world->recycle_bin[--world->recycle_bin_count] : world->entity_count++; world->bitmask[e] = 0; return e; } void destroy_entity(World* world, Entity e) { world->recycle_bin[world->recycle_bin_count++] = e; world->bitmask[e] = 0; } void add_components(World* world, Entity e, CType bits) { world->bitmask[e] |= bits; } void remove_components(World* world, Entity e, CType bits) { world->bitmask[e] &= ~bits; }