diff options
Diffstat (limited to 'src/model.c')
-rw-r--r-- | src/model.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/model.c b/src/model.c new file mode 100644 index 0000000..fe24143 --- /dev/null +++ b/src/model.c @@ -0,0 +1,57 @@ +#include "model.h" +#include <stdlib.h> + +void initializeCube(MODEL *cube) { + // Initialize a cube model + cube->bounds_center = createVertex(0, 0, 0); + COLOR red = createColor(255,0,0); + COLOR green = createColor(0,255,0); + COLOR blue = createColor(0,0,255); + COLOR yellow = createColor(255,255,0); + COLOR pink = createColor(255, 0, 100); + COLOR weird = createColor(100, 255, 70); + cube->vertices = malloc(sizeof(VERTEX) * 8); + cube->triangles = malloc(sizeof(TRIANGLE) * 12); + cube->vertices_length = 8; + cube->triangles_length = 12; + VERTEX vertices[8] = { + createVertex( -1 << FIX_SHIFT, -1 << FIX_SHIFT, -1 << FIX_SHIFT), // (0,0,0) 0 + createVertex( -1 << FIX_SHIFT, 1 << FIX_SHIFT, -1 << FIX_SHIFT), // (0,1,0) 1 + createVertex( 1 << FIX_SHIFT, 1 << FIX_SHIFT, -1 << FIX_SHIFT), // (1,1,0) 2 + createVertex( 1 << FIX_SHIFT, -1 << FIX_SHIFT, -1 << FIX_SHIFT), // (1,0,0) 3 + createVertex( 1 << FIX_SHIFT, 1 << FIX_SHIFT, 1 << FIX_SHIFT), // (1,1,1) 4 + createVertex( 1 << FIX_SHIFT, -1 << FIX_SHIFT, 1 << FIX_SHIFT), // (1,0,1) 5 + createVertex( -1 << FIX_SHIFT, 1 << FIX_SHIFT, 1 << FIX_SHIFT), // (0,1,1) 6 + createVertex( -1 << FIX_SHIFT, -1 << FIX_SHIFT, 1 << FIX_SHIFT), // (0,0,1) 7 + }; + TRIANGLE triangles[12] = { + createTriangle( 0, 1, 2, red), + createTriangle( 0, 2, 3, red), + createTriangle( 3, 2, 4, green), + createTriangle( 3, 4, 5, green), + createTriangle( 5, 4, 6, blue), + createTriangle( 5, 6, 7, blue), + createTriangle( 7, 6, 1, yellow), + createTriangle( 7, 1, 0, yellow), + createTriangle( 1, 6, 4, pink), + createTriangle( 1, 4, 2, pink), + createTriangle( 5, 7, 0, weird), + createTriangle( 5, 0, 3, weird), + }; + for (int i = 0; i < 8; i++) { + // Copy vertices data to cube + *(cube->vertices + i) = vertices[i]; + } + for (int i = 0; i < 12; i++) { + // Copy triangles to cube + *(cube->triangles + i) = triangles[i]; + } +} + +void destroyModel(MODEL *model) { + // Free memory of a model + model->vertices = NULL; + model->triangles = NULL; + free(model->vertices); + free(model->triangles); +} |