-Material::Loader::Loader(Material &m):
- DataFile::CollectionObjectLoader<Material>(m, 0)
-{
- init();
-}
-
-Material::Loader::Loader(Material &m, Collection &c):
- DataFile::CollectionObjectLoader<Material>(m, &c)
-{
- init();
-}
-
-void Material::Loader::init()
-{
- if(Resources *res = dynamic_cast<Resources *>(coll))
- srgb = res->get_srgb_conversion();
- else
- srgb = false;
-
- add("ambient", &Loader::ambient);
- add("diffuse", &Loader::diffuse);
- add("specular", &Loader::specular);
- add("emission", &Loader::emission);
- add("shininess", &Loader::shininess);
- add("reflectivity", &Loader::reflectivity);
-}
-
-Color Material::Loader::make_color(float r, float g, float b, float a)
-{
- Color c(r, g, b, a);
- if(srgb)
- c = c.to_linear();
- return c;
-}
-
-void Material::Loader::ambient(float r, float g, float b, float a)
-{
- obj.set_ambient(make_color(r, g, b, a));
-}
-
-void Material::Loader::diffuse(float r, float g, float b, float a)
-{
- obj.set_diffuse(make_color(r, g, b, a));
-}
-
-void Material::Loader::specular(float r, float g, float b, float a)
-{
- obj.set_specular(make_color(r, g, b, a));
-}
-
-void Material::Loader::emission(float r, float g, float b, float a)
-{
- obj.set_emission(make_color(r, g, b, a));
-}