Rename NULL_MODEL macro

This commit is contained in:
Abdelrahman Said 2024-08-11 19:31:14 +01:00
parent 91c4721c46
commit 46ca6bfa10
3 changed files with 10 additions and 7 deletions

View File

@ -34,7 +34,7 @@ int main(void) {
} }
Model obj = load_obj_file(arena, RESOURCE("head.obj"), RESOURCE("head.pnm")); Model obj = load_obj_file(arena, RESOURCE("head.obj"), RESOURCE("head.pnm"));
if (INVALID_MODEL(obj)) { if (IS_INVALID_MODEL(obj)) {
return TINY_EXIT_MODEL_LOAD_FAILED; return TINY_EXIT_MODEL_LOAD_FAILED;
} }

View File

@ -86,21 +86,23 @@ M4x4f g_cam_matrix = {
Model load_obj_file(Arena *arena, const char *filename, const char *texture) { Model load_obj_file(Arena *arena, const char *filename, const char *texture) {
if (!arena) { if (!arena) {
return NULL_MODEL; return INVALID_MODEL;
} }
FILE *fp = fopen(filename, "r"); FILE *fp = fopen(filename, "r");
if (!fp) { if (!fp) {
return NULL_MODEL; return INVALID_MODEL;
} }
Model model = (Model){ Model model = (Model){
.vertices = list_create(V3f, arena), .vertices = list_create(V3f, arena),
.normals = list_create(V3f, arena),
.texture_coordinates = list_create(V2f, arena), .texture_coordinates = list_create(V2f, arena),
.triangles = list_create(Triangle, arena), .triangles = list_create(Triangle, arena),
}; };
if (!(model.vertices) || !(model.texture_coordinates) || !(model.triangles)) { if (!(model.vertices) || !(model.normals) || !(model.texture_coordinates) ||
return NULL_MODEL; !(model.triangles)) {
return INVALID_MODEL;
} }
char line[8192]; char line[8192];

View File

@ -6,8 +6,8 @@
#include "mem_arena.h" #include "mem_arena.h"
#include "typed_list.h" #include "typed_list.h"
#define NULL_MODEL ((Model){0}) #define INVALID_MODEL ((Model){0})
#define INVALID_MODEL(m) (m.vertices == NULL || m.triangles == NULL) #define IS_INVALID_MODEL(m) (m.vertices == NULL || m.triangles == NULL)
typedef struct triangle Triangle; typedef struct triangle Triangle;
struct triangle { struct triangle {
@ -109,6 +109,7 @@ MAKE_LIST_TYPE(Triangle);
typedef struct model Model; typedef struct model Model;
struct model { struct model {
LIST_TYPE(V3f) * vertices; LIST_TYPE(V3f) * vertices;
LIST_TYPE(V3f) * normals;
LIST_TYPE(V2f) * texture_coordinates; LIST_TYPE(V2f) * texture_coordinates;
LIST_TYPE(Triangle) * triangles; LIST_TYPE(Triangle) * triangles;
Image *texture; Image *texture;