-#ifndef MSP_GL_MATERIAL_H_
-#define MSP_GL_MATERIAL_H_
-
-#include <msp/datafile/objectloader.h>
-#include "bindable.h"
-#include "color.h"
-
-namespace Msp {
-namespace GL {
-
-/**
-Stores OpenGL material properties. Since OpenGL does not support material
-objects, application of material is done with several calls to glMaterial.
-*/
-class Material: public BindableWithDefault<Material>
-{
-public:
- class Loader: public DataFile::ObjectLoader<Material>
- {
- public:
- Loader(Material &);
-
- private:
- void ambient(float, float, float, float);
- void diffuse(float, float, float, float);
- void specular(float, float, float, float);
- void emission(float, float, float, float);
- };
-
-private:
- Color ambient;
- Color diffuse;
- Color specular;
- Color emission;
- float shininess;
-
-public:
- Material();
- void set_ambient(const Color &a);
- void set_diffuse(const Color &d);
- void set_specular(const Color &s);
- void set_emission(const Color &e);
- void set_shininess(float s);
- const Color &get_ambient() const { return ambient; }
- const Color &get_diffuse() const { return diffuse; }
- const Color &get_specular() const { return specular; }
- const Color &get_emission() const { return emission; }
- float get_shininess() const { return shininess; }
- void bind() const;
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif