From 38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:44:46 -0500 Subject: Second Life viewer sources 1.13.2.12 --- linden/indra/newview/llvosurfacepatch.h | 112 ++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 linden/indra/newview/llvosurfacepatch.h (limited to 'linden/indra/newview/llvosurfacepatch.h') diff --git a/linden/indra/newview/llvosurfacepatch.h b/linden/indra/newview/llvosurfacepatch.h new file mode 100644 index 0000000..3549571 --- /dev/null +++ b/linden/indra/newview/llvosurfacepatch.h @@ -0,0 +1,112 @@ +/** + * @file llvosurfacepatch.h + * @brief Description of LLVOSurfacePatch class + * + * Copyright (c) 2001-2007, Linden Research, Inc. + * + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + */ + +#ifndef LL_VOSURFACEPATCH_H +#define LL_VOSURFACEPATCH_H + +#include "llviewerobject.h" +#include "llstrider.h" + +class LLSurfacePatch; +class LLDrawPool; +class LLVector2; + +class LLVOSurfacePatch : public LLViewerObject +{ +public: + LLVOSurfacePatch(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); + virtual ~LLVOSurfacePatch(); + + /*virtual*/ void markDead(); + + // Initialize data that's only inited once per class. + static void initClass(); + + /*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline); + /*virtual*/ BOOL updateGeometry(LLDrawable *drawable); + + /*virtual*/ void updateTextures(LLAgent &agent); + /*virtual*/ void setPixelAreaAndAngle(LLAgent &agent); // generate accurate apparent angle and area + + /*virtual*/ void updateSpatialExtents(LLVector3& newMin, LLVector3& newMax); + /*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate. + + void setPatch(LLSurfacePatch *patchp); + LLSurfacePatch *getPatch() const { return mPatchp; } + + void dirtyPatch(); + void dirtyGeom(); + + BOOL mDirtiedPatch; +protected: + LLDrawPool *mPool; + LLDrawPool *getPool(); + S32 mBaseComp; + LLSurfacePatch *mPatchp; + BOOL mDirtyTexture; + BOOL mDirtyTerrain; + + S32 mLastNorthStride; + S32 mLastEastStride; + S32 mLastStride; + S32 mLastLength; + + void calcColor(const LLVector3* vertex, const LLVector3* normal, LLColor4U* colorp); + BOOL updateShadows(BOOL use_shadow_factor = FALSE); + void getGeomSizesMain(const S32 stride, S32 &num_vertices, S32 &num_indices); + void getGeomSizesNorth(const S32 stride, const S32 north_stride, + S32 &num_vertices, S32 &num_indices); + void getGeomSizesEast(const S32 stride, const S32 east_stride, + S32 &num_vertices, S32 &num_indices); + + void updateMainGeometry(LLFace *facep, + LLStrider &verticesp, + LLStrider &normalsp, + LLStrider &colorsp, + LLStrider &texCoords0p, + LLStrider &texCoords1p, + U32* &indicesp, + S32 &index_offset); + void updateNorthGeometry(LLFace *facep, + LLStrider &verticesp, + LLStrider &normalsp, + LLStrider &colorsp, + LLStrider &texCoords0p, + LLStrider &texCoords1p, + U32* &indicesp, + S32 &index_offset); + void updateEastGeometry(LLFace *facep, + LLStrider &verticesp, + LLStrider &normalsp, + LLStrider &colorsp, + LLStrider &texCoords0p, + LLStrider &texCoords1p, + U32* &indicesp, + S32 &index_offset); +}; + +#endif // LL_VOSURFACEPATCH_H -- cgit v1.1