namespace GL {
Light::Light():
- diffuse(1),
- specular(1),
+ color(1),
position(0, 0, 1, 0),
spot_dir(0, 0, -1),
spot_exp(0),
matrix = Matrix::from_columns(columns);
}
-void Light::set_diffuse(const Color &c)
+void Light::set_color(const Color &c)
{
- diffuse = c;
-}
-
-void Light::set_specular(const Color &c)
-{
- specular = c;
+ color = c;
}
void Light::set_matrix(const Matrix &m)
{
string base = format("light_sources[%d]", i);
shdata.uniform(base+".position", view_matrix*position);
- shdata.uniform(base+".diffuse", diffuse);
- shdata.uniform(base+".specular", specular);
+ shdata.uniform(base+".color", color.r, color.g, color.b);
}
DataFile::ObjectLoader<Light>(l)
{
add("attenuation", &Loader::attenuation);
- add("diffuse", &Loader::diffuse);
+ add("color", &Loader::color);
add("position", &Loader::position);
- add("specular", &Loader::specular);
add("spot_direction", &Loader::spot_direction);
add("spot_exponent", &Loader::spot_exponent);
add("spot_cutoff", &Loader::spot_cutoff);
+
+ // Deprecated
+ add("diffuse", &Loader::color);
+ add("specular");
}
void Light::Loader::attenuation(float c, float l, float q)
obj.set_attenuation(c, l, q);
}
-void Light::Loader::diffuse(float r, float g, float b)
+void Light::Loader::color(float r, float g, float b)
{
- obj.set_diffuse(Color(r, g, b));
+ obj.set_color(Color(r, g, b));
}
void Light::Loader::position(float x, float y, float z, float w)
obj.set_position(Vector4(x, y, z, w));
}
-void Light::Loader::specular(float r, float g, float b)
-{
- obj.set_specular(Color(r, g, b));
-}
-
void Light::Loader::spot_direction(float x, float y, float z)
{
obj.set_spot_direction(Vector3(x, y, z));