diff --git a/src/SConscript b/src/SConscript index e0cb024..6aba113 100644 --- a/src/SConscript +++ b/src/SConscript @@ -21,6 +21,7 @@ files = [ 'basics.cc', 'camera.cc', 'light.cc', + 'lightPoint.cc', 'log.cc', 'material.cc', 'object.cc', diff --git a/src/lightPoint.cc b/src/lightPoint.cc new file mode 100644 index 0000000..7cee199 --- /dev/null +++ b/src/lightPoint.cc @@ -0,0 +1,35 @@ +/* lightPoint.cc + * vim: set tw=80: + * Eryn Wells + */ + +#include "lightPoint.hh" + + +using charles::basics::Vector4; + + +namespace charles { + +PointLight::PointLight(const Vector4& origin, + const Color& color) + : Light(color), + mOrigin(origin) +{ } + + +Vector4 +PointLight::GetOrigin() +{ + return mOrigin; +} + + +void +PointLight::SetOrigin(const Vector4& origin) +{ + mOrigin = origin; +} + +} /* namespace charles */ + diff --git a/src/lightPoint.hh b/src/lightPoint.hh new file mode 100644 index 0000000..efcfb49 --- /dev/null +++ b/src/lightPoint.hh @@ -0,0 +1,34 @@ +/* lightPoint.hh + * vim: set tw=80: + * Eryn Wells + */ + +#ifndef __LIGHTPOINT_HH__ +#define __LIGHTPOINT_HH__ + +#include "light.hh" + + +namespace charles { + +/** + * The simplest light source. Emits light in all directions uniformly, without + * falloff. + */ +class PointLight + : public Light +{ +public: + PointLight(const basics::Vector4 &origin, + const basics::Color& color); + + basics::Vector4& GetOrigin(); + void SetOrigin(const basics::Vector4& origin); + +private: + basics::Vector4 mOrigin; +}; + +} /* namespace charles */ + +#endif /* __LIGHTPOINT_HH__ */