RyanHub - file viewer
filename: src/render/light.c
branch: main
back to repo
// light.c

#include "light.h"

Light g_lights[MAX_LIGHTS];
int g_light_count = 0;

int light_create(vec3 pos, vec3 color, float intensity) {
    if (g_light_count >= MAX_LIGHTS) return -1;

    //printf("Creating Light %d: Position=(%.2f, %.2f, %.2f), Color=(%.2f, %.2f, %.2f), Intensity=%.2f\n",
    //    g_light_count, pos[0], pos[1], pos[2], color[0], color[1], color[2], intensity);

    g_lights[g_light_count] = (Light){
        .position = { pos[0], pos[1], pos[2] },
        .color = { color[0], color[1], color[2] },
        .intensity = intensity,
        .enabled = 1
    };
    return g_light_count++;
}

void light_set_position(int light_id, vec3 pos) {
    if (light_id >= 0 && light_id < g_light_count)
        glm_vec3_copy(pos, g_lights[light_id].position);
}
void light_set_color(int light_id, vec3 color) {
    if (light_id >= 0 && light_id < g_light_count)
        glm_vec3_copy(color, g_lights[light_id].color);
}
void light_set_intensity(int light_id, float intensity) {
    if (light_id >= 0 && light_id < g_light_count)
        g_lights[light_id].intensity = intensity;
}
void light_enable(int light_id) {
    if (light_id >= 0 && light_id < g_light_count)
        g_lights[light_id].enabled = 1;
}
void light_disable(int light_id) {
    if (light_id >= 0 && light_id < g_light_count)
        g_lights[light_id].enabled = 0;
}