From 3a52808a6609a0b356d739017d1f0eb6f8123e98 Mon Sep 17 00:00:00 2001 From: Aaditya Dhruv Date: Sun, 25 Jan 2026 23:45:10 -0600 Subject: Fix block_init/draw bug, add more blocks to draw - VAO/VBO binding bug fixed, added explaination in comments - Add 9 rotating blocks --- src/engine.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'src/engine.c') diff --git a/src/engine.c b/src/engine.c index e5cda7e..ec1fdcd 100644 --- a/src/engine.c +++ b/src/engine.c @@ -24,17 +24,23 @@ int engine_init(struct engine *engine) { engine->shader = shader; // Setup Objects to draw - struct block* blk = malloc(sizeof(struct block)); - memset(blk, 0, sizeof(struct block)); - vec3 pos = { 0, 0, -1.0f }; - if (block_init(pos, blk) != 0) { - free(window); - free(shader); - free(blk); - return -1; - } vector_init(&engine->objects); - VECTOR_INSERT(engine->objects, (void*)blk); + + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + fprintf(stderr, "Creating block %d\n", i + j); + struct block* blk = malloc(sizeof(struct block)); + memset(blk, 0, sizeof(struct block)); + vec3 pos = { 0.5f * ((float)i - 1), 0.5f * ((float)j - 1), 0.0f}; + if (block_init(pos, blk) != 0) { + //TODO: Fix frees here + return -1; + } + fprintf(stderr, "Inserting block %d\n", i + j); + if (VECTOR_INSERT(engine->objects, (void*)blk) == -1) exit(1); + fprintf(stderr, "Done block %d\n", i + j); + } + } engine->game_loop = 1; return 0; @@ -53,7 +59,7 @@ void engine_draw(struct engine* engine) { glEnable(GL_DEPTH_TEST); //glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); glUseProgram(engine->shader->program); - for (int i = 0; i < engine->objects->len; i++) { + for (int i = 0; i < vector_length(engine->objects); i++) { struct block* block = vector_get(engine->objects, i); block_draw(block, engine->shader); } -- cgit