00001 00032 #ifndef LL_LLDRAWPOOLSKY_H 00033 #define LL_LLDRAWPOOLSKY_H 00034 00035 #include "lldrawpool.h" 00036 00037 class LLSkyTex; 00038 class LLHeavenBody; 00039 class LLGLSLShader; 00040 00041 class LLDrawPoolSky : public LLFacePool 00042 { 00043 private: 00044 LLSkyTex *mSkyTex; 00045 LLHeavenBody *mHB[2]; // Sun and Moon 00046 LLGLSLShader *mShader; 00047 00048 public: 00049 enum 00050 { 00051 VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | 00052 LLVertexBuffer::MAP_TEXCOORD 00053 }; 00054 00055 virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; } 00056 00057 LLDrawPoolSky(); 00058 00059 /*virtual*/ LLDrawPool *instancePool(); 00060 00061 /*virtual*/ void prerender(); 00062 /*virtual*/ void render(S32 pass = 0); 00063 /*virtual*/ void renderForSelect(); 00064 /*virtual*/ void endRenderPass(S32 pass); 00065 void setSkyTex(LLSkyTex* const st) { mSkyTex = st; } 00066 void setSun(LLHeavenBody* sun_flag) { mHB[0] = sun_flag; } 00067 void setMoon(LLHeavenBody* moon) { mHB[1] = moon; } 00068 00069 void renderSkyCubeFace(U8 side); 00070 void renderHeavenlyBody(U8 hb, LLFace* face); 00071 void renderSunHalo(LLFace* face); 00072 00073 }; 00074 00075 #endif // LL_LLDRAWPOOLSKY_H