X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Flight.cpp;h=4ba581e029f0083068e1517b1b870b4d7b552c18;hp=aeb17c5be4a604b79235ade3cd2423d34e83dfb0;hb=679f0fd1f3504b5536f18943e188606887f3785c;hpb=05d70b38a546f35a7687cae6ae3fcd6ab78898b2 diff --git a/source/light.cpp b/source/light.cpp index aeb17c5b..4ba581e0 100644 --- a/source/light.cpp +++ b/source/light.cpp @@ -188,5 +188,53 @@ void Light::unbind_from(unsigned i) disable(GL_LIGHT0+unit.get_index()); } + +Light::Loader::Loader(Light &l): + DataFile::ObjectLoader(l) +{ + add("attenuation", &Loader::attenuation); + add("diffuse", &Loader::diffuse); + 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); +} + +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) +{ + obj.set_diffuse(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)); +} + +void Light::Loader::spot_exponent(float e) +{ + obj.set_spot_exponent(e); +} + +void Light::Loader::spot_cutoff(float c) +{ + obj.set_spot_cutoff(Geometry::Angle::from_degrees(c)); +} + } // namespace GL } // namespace Msp