use crate::model::loader::fbx::data::TextureIndex;
#[derive(Debug, Clone)]
pub struct Material {
pub name: Option<String>,
pub diffuse_texture: Option<TextureIndex>,
pub data: ShadingData,
}
#[derive(Debug, Clone, Copy)]
pub enum ShadingData {
Lambert(LambertData),
}
#[derive(Debug, Clone, Copy)]
pub struct LambertData {
pub ambient: [f32; 3],
pub diffuse: [f32; 3],
pub emissive: [f32; 3],
}
impl Into<crate::render::Material> for Material {
fn into(self) -> crate::render::Material {
match self.data {
ShadingData::Lambert(lambert) => crate::render::Material {
ambient: lambert.ambient.into(),
diffuse: lambert.diffuse.into(),
specular: lambert.emissive.into(),
shininess: 0.0,
},
}
}
}