tiny-game-framework 0.0.163

Tiny game framework for creating games!
Documentation
use gl::UseProgram;
use glam::{vec3, Vec3};

use std::ffi::CString;

use crate::{cstr, Renderer, Shader};

#[derive(Copy, Clone)]
pub struct Light {
    pub position: Vec3,
    pub color: Vec3,
}

impl Renderer {
    pub unsafe fn send_light_uniforms(&self, shader: &Shader) {
        shader.use_shader();
        shader.uniform_vec3f(cstr!("viewPos"), &self.camera.pos);
        shader.uniform_1i(cstr!("num_lights"), self.lights.len() as i32);
        let mut i = 0;
        for light in self.lights.values() {
            shader.uniform_vec3f(cstr!(format!("lightColor[{}]", i)), &light.color);
            shader.uniform_vec3f(cstr!(format!("lightPos[{}]", i)), &light.position);

            i+=1;
        }
        UseProgram(0);
    }

    pub fn add_light(&mut self, name: &str, light: Light) {
        self.lights.insert(name.to_string(), light);
    }

    pub fn get_light(&self, name: &str) -> Option<&Light> {
        self.lights.get(name)
    }

    pub fn get_light_mut(&mut self, name: &str) -> Option<&mut Light> {
        self.lights.get_mut(name)
    }
}