00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __SGL_LIGHT_HPP
00029 #define __SGL_LIGHT_HPP
00030
00031 #include <sgl.h>
00032 #include <sglNode.hpp>
00033
00034
00035
00065 class SGL_DLL_API sglLight : public sglNode
00066 {
00067 public:
00069 sglLight();
00071 virtual ~sglLight();
00072
00076 void setOn(bool on);
00077
00081 bool getOn() const { return m_on_flag; }
00082
00086 void setAmbient(const sglVec4f &color) { m_ambient = color; }
00087
00094 void setAmbient(float r, float g, float b, float a)
00095 { m_ambient.set(r,g,b,a); }
00096
00100 const sglVec4f &getAmbient() const { return m_ambient; }
00101
00105 void setDiffuse(const sglVec4f &color) { m_diffuse = color; }
00106
00113 void setDiffuse(float r, float g, float b, float a)
00114 { m_diffuse.set(r,g,b,a); }
00115
00119 const sglVec4f &getDiffuse() const { return m_diffuse; }
00120
00124 void setSpecular(const sglVec4f &color) { m_specular = color; }
00125
00132 void setSpecular(float r, float g, float b, float a)
00133 { m_specular.set(r,g,b,a); }
00134
00138 const sglVec4f &getSpecular() const { return m_specular; }
00139
00144 virtual void setup(GLenum gl_light_number) const;
00145
00146
00147 virtual void printInfo(ostream &ostrm, const char *indent_string) const;
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160 protected:
00161 virtual void cull(sglCull<float> &trav_state,
00162 unsigned int cull_flags) const;
00163 virtual void cull(sglCull<double> &trav_state,
00164 unsigned int cull_flags) const;
00165
00166 void copyTo(sglLight *dst, unsigned int mode) const;
00167
00168 private:
00169 sglLight(const sglLight &);
00170 sglLight &operator=(const sglLight &);
00171
00172 protected:
00173 bool m_on_flag;
00174
00175 sglVec4f m_ambient;
00176 sglVec4f m_diffuse;
00177 sglVec4f m_specular;
00178 };
00179
00180 #endif