summaryrefslogtreecommitdiff
path: root/src/model.c
blob: fe24143095f97c86ea6848cb1900d34bdcc402b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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);
}