// 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;
}