From 7042b6caff21c678524b94ef57455563bc17fb43 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Sat, 1 May 2010 03:36:02 -0700 Subject: Applied patch by Aleric Inglewood for VWR-12984: Water flickers and disappears in patches, part 3: Collapse LL_VO_HOLE_WATER and LL_VO_EDGE_WATER into one LL_VO_VOID_WATER --- linden/indra/newview/lldrawable.cpp | 3 +-- linden/indra/newview/lldrawpoolwater.cpp | 2 +- linden/indra/newview/llspatialpartition.cpp | 3 +-- linden/indra/newview/llviewerobject.cpp | 3 +-- linden/indra/newview/llviewerobject.h | 13 ++++++------- linden/indra/newview/llvowater.cpp | 6 ++++++ linden/indra/newview/llvowater.h | 5 +++-- linden/indra/newview/llworld.cpp | 5 +++-- 8 files changed, 22 insertions(+), 18 deletions(-) (limited to 'linden') diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp index 494ac5b..5a383bc 100644 --- a/linden/indra/newview/lldrawable.cpp +++ b/linden/indra/newview/lldrawable.cpp @@ -361,8 +361,7 @@ void LLDrawable::makeActive() { U32 pcode = mVObjp->getPCode(); if (pcode == LLViewerObject::LL_VO_WATER || - pcode == LLViewerObject::LL_VO_HOLE_WATER || - pcode == LLViewerObject::LL_VO_EDGE_WATER || + pcode == LLViewerObject::LL_VO_VOID_WATER || pcode == LLViewerObject::LL_VO_SURFACE_PATCH || pcode == LLViewerObject::LL_VO_PART_GROUP || pcode == LLViewerObject::LL_VO_HUD_PART_GROUP || diff --git a/linden/indra/newview/lldrawpoolwater.cpp b/linden/indra/newview/lldrawpoolwater.cpp index 81e1c68..624b8a8 100644 --- a/linden/indra/newview/lldrawpoolwater.cpp +++ b/linden/indra/newview/lldrawpoolwater.cpp @@ -540,7 +540,7 @@ void LLDrawPoolWater::shade() sNeedsReflectionUpdate = TRUE; - if (water->getUseTexture() || !water->isEdgeWater()) + if (water->getUseTexture() || !water->getIsEdgePatch()) { sNeedsDistortionUpdate = TRUE; face->renderIndexed(); diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp index 01ed375..c1d5ff3 100644 --- a/linden/indra/newview/llspatialpartition.cpp +++ b/linden/indra/newview/llspatialpartition.cpp @@ -2304,8 +2304,7 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE) case LLViewerObject::LL_VO_HUD_PART_GROUP: gGL.color4f(0,0,1,1); break; - case LLViewerObject::LL_VO_EDGE_WATER: - case LLViewerObject::LL_VO_HOLE_WATER: + case LLViewerObject::LL_VO_VOID_WATER: case LLViewerObject::LL_VO_WATER: gGL.color4f(0,0.5f,1,1); break; diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp index f3353bb..cbd0472 100644 --- a/linden/indra/newview/llviewerobject.cpp +++ b/linden/indra/newview/llviewerobject.cpp @@ -144,8 +144,7 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco res = new LLVOSurfacePatch(id, pcode, regionp); break; case LL_VO_SKY: res = new LLVOSky(id, pcode, regionp); break; - case LL_VO_EDGE_WATER: - case LL_VO_HOLE_WATER: + case LL_VO_VOID_WATER: res = new LLVOVoidWater(id, pcode, regionp); break; case LL_VO_WATER: res = new LLVOWater(id, pcode, regionp); break; diff --git a/linden/indra/newview/llviewerobject.h b/linden/indra/newview/llviewerobject.h index c443441..33e8da2 100644 --- a/linden/indra/newview/llviewerobject.h +++ b/linden/indra/newview/llviewerobject.h @@ -509,13 +509,12 @@ public: LL_VO_WL_SKY = LL_PCODE_APP | 0x40, LL_VO_SQUARE_TORUS = LL_PCODE_APP | 0x50, LL_VO_SKY = LL_PCODE_APP | 0x60, - LL_VO_EDGE_WATER = LL_PCODE_APP | 0x70, - LL_VO_HOLE_WATER = LL_PCODE_APP | 0x80, - LL_VO_WATER = LL_PCODE_APP | 0x90, - LL_VO_GROUND = LL_PCODE_APP | 0xa0, - LL_VO_PART_GROUP = LL_PCODE_APP | 0xb0, - LL_VO_TRIANGLE_TORUS = LL_PCODE_APP | 0xc0, - LL_VO_HUD_PART_GROUP = LL_PCODE_APP | 0xd0, + LL_VO_VOID_WATER = LL_PCODE_APP | 0x70, + LL_VO_WATER = LL_PCODE_APP | 0x80, + LL_VO_GROUND = LL_PCODE_APP | 0x90, + LL_VO_PART_GROUP = LL_PCODE_APP | 0xa0, + LL_VO_TRIANGLE_TORUS = LL_PCODE_APP | 0xb0, + LL_VO_HUD_PART_GROUP = LL_PCODE_APP | 0xc0, } EVOType; LLUUID mID; diff --git a/linden/indra/newview/llvowater.cpp b/linden/indra/newview/llvowater.cpp index 7e9470a..c66295a 100644 --- a/linden/indra/newview/llvowater.cpp +++ b/linden/indra/newview/llvowater.cpp @@ -77,6 +77,7 @@ LLVOWater::LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regi setScale(LLVector3(256.f, 256.f, 0.f)); // Hack for setting scale for bounding boxes/visibility. mUseTexture = TRUE; + mIsEdgePatch = FALSE; mRenderType = LLPipeline::RENDER_TYPE_WATER; } @@ -253,6 +254,11 @@ void LLVOWater::setUseTexture(const BOOL use_texture) mUseTexture = use_texture; } +void LLVOWater::setIsEdgePatch(const BOOL edge_patch) +{ + mIsEdgePatch = edge_patch; +} + void LLVOWater::updateSpatialExtents(LLVector3 &newMin, LLVector3& newMax) { LLVector3 pos = getPositionAgent(); diff --git a/linden/indra/newview/llvowater.h b/linden/indra/newview/llvowater.h index 37480b6..55ce6d7 100644 --- a/linden/indra/newview/llvowater.h +++ b/linden/indra/newview/llvowater.h @@ -77,12 +77,13 @@ public: /*virtual*/ BOOL isActive() const; // Whether this object needs to do an idleUpdate. void setUseTexture(const BOOL use_texture); + void setIsEdgePatch(const BOOL edge_patch); BOOL getUseTexture() const { return mUseTexture; } - - bool isEdgeWater(void) const { return mPrimitiveCode == LL_VO_EDGE_WATER; } + BOOL getIsEdgePatch() const { return mIsEdgePatch; } protected: BOOL mUseTexture; + BOOL mIsEdgePatch; LLPipeline::LLRenderTypeMask mRenderType; }; diff --git a/linden/indra/newview/llworld.cpp b/linden/indra/newview/llworld.cpp index 5026808..17fad2b 100644 --- a/linden/indra/newview/llworld.cpp +++ b/linden/indra/newview/llworld.cpp @@ -1105,7 +1105,7 @@ void LLWorld::updateWaterObjects() U64 region_handle = to_region_handle(x, y); if (!getRegionFromHandle(region_handle)) { - LLVOWater* waterp = (LLVOWater*)gObjectList.createObjectViewer(LLViewerObject::LL_VO_HOLE_WATER, gAgent.getRegion()); + LLVOWater* waterp = (LLVOWater*)gObjectList.createObjectViewer(LLViewerObject::LL_VO_VOID_WATER, gAgent.getRegion()); waterp->setUseTexture(FALSE); waterp->setPositionGlobal(LLVector3d(x + rwidth / 2, y + rwidth / 2, water_center_z)); waterp->setScale(LLVector3((F32)rwidth, (F32)rwidth, box_height)); @@ -1140,9 +1140,10 @@ void LLWorld::updateWaterObjects() { // The edge water objects can be dead because they're attached to the region that the // agent was in when they were originally created. - mEdgeWaterObjects[dir] = (LLVOWater *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_EDGE_WATER, gAgent.getRegion()); + mEdgeWaterObjects[dir] = (LLVOWater *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_VOID_WATER, gAgent.getRegion()); waterp = mEdgeWaterObjects[dir]; waterp->setUseTexture(FALSE); + waterp->setIsEdgePatch(TRUE); // Mark that this is edge water and not hole water. gPipeline.createObject(waterp); } -- cgit v1.1