]> git.lizzy.rs Git - dragonblocks_alpha.git/commitdiff
Minor code style fixes and allow MeshObject creation without adding to a scene
authorElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 12 Jul 2021 15:41:07 +0000 (17:41 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 12 Jul 2021 15:41:07 +0000 (17:41 +0200)
src/mesh.c
src/shaders.h

index f4db6cf30115af2b81d702e2d7272ffbeb3f5757..c9dbff816d83ad80cd9adf07806ad19ac393b8c6 100644 (file)
@@ -89,22 +89,23 @@ MeshObject *meshobject_create(VertexBuffer buffer, struct Scene *scene, v3f pos)
        array_copy(&meshes, (void *) &obj->meshes, &obj->meshes_count);
        free(meshes.ptr);
 
-       scene_add_object(scene, obj);
+       if (scene)
+               scene_add_object(scene, obj);
 
        return obj;
 }
 
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wpedantic"
 
 void meshobject_transform(MeshObject *obj)
 {
        mat4x4_translate(obj->transform, obj->pos.x, obj->pos.y, obj->pos.z);
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic"
        mat4x4_rotate(obj->transform, obj->transform, obj->rot.x, obj->rot.y, obj->rot.z, obj->angle);
        mat4x4_scale_aniso(obj->transform, obj->transform, obj->scale.x, obj->scale.y, obj->scale.z);
+#pragma GCC diagnostic pop
 }
 
-#pragma GCC diagnostic pop
 
 void meshobject_delete(MeshObject *obj)
 {
@@ -113,12 +114,16 @@ void meshobject_delete(MeshObject *obj)
 
                if (mesh->vertices)
                        free(mesh->vertices);
+
                if (mesh->VAO)
                        glDeleteVertexArrays(1, &mesh->VAO);
+
                if (mesh->VBO)
                        glDeleteBuffers(1, &mesh->VAO);
+
                free(mesh);
        }
+
        free(obj);
 }
 
@@ -132,14 +137,12 @@ static void mesh_configure(Mesh *mesh)
 
        glBufferData(GL_ARRAY_BUFFER, mesh->vertices_count * sizeof(Vertex), mesh->vertices, GL_STATIC_DRAW);
 
-
        glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(Vertex), (GLvoid *) offsetof(Vertex, x));
        glEnableVertexAttribArray(0);
 
        glVertexAttribPointer(1, 2, GL_FLOAT, false, sizeof(Vertex), (GLvoid *) offsetof(Vertex, s));
        glEnableVertexAttribArray(1);
 
-
        glBindBuffer(GL_ARRAY_BUFFER, 0);
        glBindVertexArray(0);
 
index d7941052b0736d65f88878dc1d6637d514c20050..3bba72c92ce5449457c1b41d582bcf3d9aa081d8 100644 (file)
@@ -12,7 +12,7 @@ typedef struct
        GLint loc_projection;
 } ShaderProgram;
 
-ShaderProgram *create_shader_program(const char *path);        // ToDo
+ShaderProgram *create_shader_program(const char *path);
 void delete_shader_program(ShaderProgram *prog);
 
 #endif