00001 00032 #ifndef LL_VOWATER_H 00033 #define LL_VOWATER_H 00034 00035 #include "llviewerobject.h" 00036 #include "llviewerimage.h" 00037 #include "v2math.h" 00038 00039 const U32 N_RES = 16; //32 // number of subdivisions of wave tile 00040 const U8 WAVE_STEP = 8; 00041 00042 class LLSurface; 00043 class LLHeavenBody; 00044 class LLVOSky; 00045 class LLFace; 00046 00047 class LLVOWater : public LLStaticViewerObject 00048 { 00049 public: 00050 enum 00051 { 00052 VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | 00053 (1 << LLVertexBuffer::TYPE_NORMAL) | 00054 (1 << LLVertexBuffer::TYPE_TEXCOORD) 00055 }; 00056 00057 LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); 00058 00059 /*virtual*/ void markDead(); 00060 00061 // Initialize data that's only inited once per class. 00062 static void initClass(); 00063 static void cleanupClass(); 00064 00065 /*virtual*/ BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); 00066 /*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline); 00067 /*virtual*/ BOOL updateGeometry(LLDrawable *drawable); 00068 /*virtual*/ void updateSpatialExtents(LLVector3& newMin, LLVector3& newMax); 00069 00070 /*virtual*/ void updateTextures(LLAgent &agent); 00071 /*virtual*/ void setPixelAreaAndAngle(LLAgent &agent); // generate accurate apparent angle and area 00072 00073 virtual U32 getPartitionType() const; 00074 00075 /*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate. 00076 00077 void setUseTexture(const BOOL use_texture); 00078 00079 protected: 00080 BOOL mUseTexture; 00081 }; 00082 00083 #endif // LL_VOSURFACEPATCH_H