diff --git a/src/graphics/model.c b/src/graphics/model.c index 0d433ca9..38b898db 100644 --- a/src/graphics/model.c +++ b/src/graphics/model.c @@ -50,10 +50,9 @@ static void visitNode(ModelData* modelData, ModelNode* node, mat4 transform, vec // Face vertex indices for (int f = 0; f < mesh->faces.length; f++) { ModelFace face = mesh->faces.data[f]; - - for (int v = 0; v < face.indices.length; v++) { - vec_push(indices, face.indices.data[v] + indexOffset); - } + vec_push(indices, face.indices[0] + indexOffset); + vec_push(indices, face.indices[1] + indexOffset); + vec_push(indices, face.indices[2] + indexOffset); } } diff --git a/src/model/modelData.c b/src/model/modelData.c index d2e305d4..d54cfac3 100644 --- a/src/model/modelData.c +++ b/src/model/modelData.c @@ -50,13 +50,9 @@ ModelData* lovrModelDataCreateFromFile(void* data, int size) { } ModelFace face; - vec_init(&face.indices); - - // Indices for (unsigned int i = 0; i < assimpFace.mNumIndices; i++) { - vec_push(&face.indices, assimpFace.mIndices[i]); + face.indices[i] = assimpFace.mIndices[i]; } - vec_push(&mesh->faces, face); } @@ -114,11 +110,6 @@ void lovrModelDataDestroy(const Ref* ref) { for (int i = 0; i < modelData->meshes.length; i++) { ModelMesh* mesh = modelData->meshes.data[i]; - - for (int f = 0; f < mesh->faces.length; f++) { - vec_deinit(&mesh->faces.data[f].indices); - } - vec_deinit(&mesh->faces); vec_deinit(&mesh->vertices); vec_deinit(&mesh->normals); diff --git a/src/model/modelData.h b/src/model/modelData.h index 5178d89b..cc4f8f9d 100644 --- a/src/model/modelData.h +++ b/src/model/modelData.h @@ -19,7 +19,7 @@ typedef struct { typedef vec_t(ModelVertex) vec_model_vertex_t; typedef struct { - vec_uint_t indices; + unsigned int indices[3]; } ModelFace; typedef vec_t(ModelFace) vec_model_face_t;