00001 00032 #ifndef LL_LLVOCLOUDS_H 00033 #define LL_LLVOCLOUDS_H 00034 00035 #include "llviewerobject.h" 00036 #include "lltable.h" 00037 #include "v4coloru.h" 00038 00039 class LLViewerImage; 00040 class LLViewerCloudGroup; 00041 00042 class LLCloudGroup; 00043 00044 00045 class LLVOClouds : public LLAlphaObject 00046 { 00047 public: 00048 LLVOClouds(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp ); 00049 00050 // Initialize data that's only inited once per class. 00051 static void initClass(); 00052 00053 void updateDrawable(BOOL force_damped); 00054 00055 /*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline); 00056 /*virtual*/ BOOL updateGeometry(LLDrawable *drawable); 00057 /*virtual*/ void getGeometry(S32 te, 00058 LLStrider<LLVector3>& verticesp, 00059 LLStrider<LLVector3>& normalsp, 00060 LLStrider<LLVector2>& texcoordsp, 00061 LLStrider<LLColor4U>& colorsp, 00062 LLStrider<U32>& indicesp); 00063 00064 /*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate. 00065 BOOL isParticle(); 00066 F32 getPartSize(S32 idx); 00067 00068 /*virtual*/ void updateTextures(LLAgent &agent); 00069 /*virtual*/ void setPixelAreaAndAngle(LLAgent &agent); // generate accurate apparent angle and area 00070 00071 void updateFaceSize(S32 idx) { } 00072 BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); 00073 00074 virtual U32 getPartitionType() const; 00075 00076 void setCloudGroup(LLCloudGroup *cgp) { mCloudGroupp = cgp; } 00077 protected: 00078 virtual ~LLVOClouds(); 00079 00080 LLCloudGroup *mCloudGroupp; 00081 }; 00082 00083 extern LLUUID gCloudTextureID; 00084 00085 #endif // LL_VO_CLOUDS_H