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