#include #include #include #include "storage.h" #include "bitset.h" typedef struct { int x; int y; } transform_t; void printTransform(transform_t *t) { printf("Transform { .x = %i, .y = %i }\n", t->x, t->y); } typedef struct { float width; float height; int collisionsCount; } collider_t; void initStorage(storage_t *storage) { storage->componentsStored = 0; storage->objectsStored = 0; storage->objects = (component_pair_t *) malloc(MAX_COMPONENTS * sizeof(component_pair_t)); bitarena_init(&storage->objectSignatures, MAX_OBJECTS); REGISTER_COMPONENT(storage, transform_t); REGISTER_COMPONENT(storage, collider_t); } void loadScene(storage_t *storage) { bitset_t s1 = bitarena_at(&storage->objectSignatures, 0); bitset_t s2 = bitarena_at(&storage->objectSignatures, 1); bitset_set(s1, 9); bitset_set(s2, 9); bitset_print(s1); bitset_print(s2); bitset_t sAnd = bitset_and(s1, s2); printf("Bitset is zero: %i\n", bitset_isZero(sAnd)); printf("Bitset is equals: %i\n", bitset_equals(s1, s2)); entity_t e1 = createEntity(storage); transform_t *t1 = GET_COMPONENT(storage, transform_t, e1); t1->x = 13; t1->y = 37; printTransform(t1); entity_t e2 = createEntity(storage); transform_t *t2 = GET_COMPONENT(storage, transform_t, e2); t2->x = 14; t2->y = 88; printTransform(t2); } int main() { storage_t storage; initStorage(&storage); loadScene(&storage); return 0; }