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 #ifndef _CIvfLighting_h_
00026 #define _CIvfLighting_h_
00027
00028 #include <ivf/IvfBase.h>
00029 #include <ivf/IvfLight.h>
00030
00031 #include <ivfdef/IvfSingletonDestroyer.h>
00032
00033 IvfStdPointer(CIvfLighting);
00034
00052 class IVF_API CIvfLighting : public CIvfBase {
00053 private:
00054 static CIvfLighting* m_instance;
00055 static CIvfSingletonDestroyer<CIvfLighting> m_destroyer;
00056 std::vector<CIvfLight*> m_lights;
00057 GLfloat m_ambient[4];
00058 GLint m_local[1], m_twoside[1];
00059 std::vector<bool> m_enabled;
00060 public:
00061 static CIvfLighting* getInstance();
00062
00063 IvfClassInfo("CIvfLighting",CIvfBase);
00064
00065
00067 void render();
00068
00070 void enable();
00071
00073 void disable();
00074
00076 bool isEnabled();
00077
00079 void disableLights();
00080
00082 void enableLights();
00083
00085 void saveState();
00086
00088 void restoreState();
00089
00091 void setTwoSide(bool flag);
00092
00094 bool getTwoSide();
00095
00097 void setLocalViewer(bool flag);
00098
00100 bool getLocalViewer();
00101
00107 CIvfLight* getLight(int idx);
00108
00110 int getSize();
00111
00113 void setAmbientColor(float red, float green, float blue, float alpha);
00114
00116 void restoreEnabledState();
00117
00119 void saveEnabledState();
00120 protected:
00122 CIvfLighting();
00123 ~CIvfLighting();
00124 friend class CIvfSingletonDestroyer<CIvfLighting>;
00125 };
00126
00127 #endif