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::model::Material> for Material {
fn into(self) -> crate::model::Material {
match self.data {
ShadingData::Lambert(lambert) => crate::model::Material {
ambient: lambert.ambient,
diffuse: lambert.diffuse,
specular: lambert.emissive,
shininess: 0.0,
},
}
}
}