summaryrefslogtreecommitdiff
path: root/src/sys/sys_lights.c
blob: f063877a5fc893e1fae6ef98d373b4bc516a6279 (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include "sys.h"

void Lights_AddLight(Gfx** dList) {
    gSPNumLights((*dList)++, 7);
    gSPLight((*dList)++, &gLight->l[0], 1);
    gSPLight((*dList)++, &gLight->l[1], 2);
    gSPLight((*dList)++, &gLight->l[2], 3);
    gSPLight((*dList)++, &gLight->l[3], 4);
    gSPLight((*dList)++, &gLight->l[4], 5);
    gSPLight((*dList)++, &gLight->l[5], 6);
    gSPLight((*dList)++, &gLight->l[6], 7);
    gSPLight((*dList)++, &gLight->a, 8);
    gLight++;
}

void Lights_SetOneLight(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG,
                        s32 ambB) {
    s32 i;

    for (i = 0; i < 4; i++) {
        gLight->l[i].l.dir[0] = dirX;
        gLight->l[i].l.dir[1] = dirY;
        gLight->l[i].l.dir[2] = dirZ;
        gLight->l[i].l.col[0] = colR;
        gLight->l[i].l.col[1] = colG;
        gLight->l[i].l.col[2] = colB;
        gLight->l[i].l.colc[0] = colR;
        gLight->l[i].l.colc[1] = colG;
        gLight->l[i].l.colc[2] = colB;
    }
    for (i = 4; i < 7; i++) {
        gLight->l[i].l.dir[0] = dirX;
        gLight->l[i].l.dir[1] = dirY;
        gLight->l[i].l.dir[2] = dirZ;
        gLight->l[i].l.col[0] = 0;
        gLight->l[i].l.col[1] = 0;
        gLight->l[i].l.col[2] = 0;
        gLight->l[i].l.colc[0] = 0;
        gLight->l[i].l.colc[1] = 0;
        gLight->l[i].l.colc[2] = 0;
    }
    gLight->a.l.col[0] = ambR;
    gLight->a.l.col[1] = ambG;
    gLight->a.l.col[2] = ambB;
    gLight->a.l.colc[0] = ambR;
    gLight->a.l.colc[1] = ambG;
    gLight->a.l.colc[2] = ambB;
    Lights_AddLight(dList);
}

void Lights_SetTwoLights(Gfx** dList, s32 dir1x, s32 dir1y, s32 dir1z, s32 dir2x, s32 dir2y, s32 dir2z, s32 col1r,
                         s32 col1g, s32 col1b, s32 col2r, s32 col2g, s32 col2b, s32 ambR, s32 ambG, s32 ambB) {
    s32 i;

    for (i = 0; i < 4; i++) {
        gLight->l[i].l.dir[0] = dir1x;
        gLight->l[i].l.dir[1] = dir1y;
        gLight->l[i].l.dir[2] = dir1z;
        gLight->l[i].l.col[0] = col1r;
        gLight->l[i].l.col[1] = col1g;
        gLight->l[i].l.col[2] = col1b;
        gLight->l[i].l.colc[0] = col1r;
        gLight->l[i].l.colc[1] = col1g;
        gLight->l[i].l.colc[2] = col1b;
    }
    for (i = 4; i < 7; i++) {
        gLight->l[i].l.dir[0] = dir2x;
        gLight->l[i].l.dir[1] = dir2y;
        gLight->l[i].l.dir[2] = dir2z;
        gLight->l[i].l.col[0] = col2r;
        gLight->l[i].l.col[1] = col2g;
        gLight->l[i].l.col[2] = col2b;
        gLight->l[i].l.colc[0] = col2r;
        gLight->l[i].l.colc[1] = col2g;
        gLight->l[i].l.colc[2] = col2b;
    }
    gLight->a.l.col[0] = ambR;
    gLight->a.l.col[1] = ambG;
    gLight->a.l.col[2] = ambB;
    gLight->a.l.colc[0] = ambR;
    gLight->a.l.colc[1] = ambG;
    gLight->a.l.colc[2] = ambB;
    Lights_AddLight(dList);
}