summaryrefslogtreecommitdiff
path: root/indra/newview/llworld.cpp
diff options
context:
space:
mode:
authorCallum Prentice <callum@mbp.localdomain>2022-12-12 11:13:10 -0800
committerCallum Prentice <callum@mbp.localdomain>2022-12-12 11:13:10 -0800
commitf7838ca17c7e4a5a595f5cb898c70a18be4c9cd9 (patch)
treefa2dc9c6d34a0c6e7de54df74c032f611a0bd747 /indra/newview/llworld.cpp
parent395a60a83e954e9bcbb44dc6f1a49319b2d628b7 (diff)
parenta0c3d69c620a92d73a1008f218680fb4d0ef9255 (diff)
Merge branch 'main' into DRTVWR-568
Diffstat (limited to 'indra/newview/llworld.cpp')
-rw-r--r--indra/newview/llworld.cpp38
1 files changed, 27 insertions, 11 deletions
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 05e3aa783f..cfd79dfd5a 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -93,7 +93,7 @@ LLWorld::LLWorld() :
mLastPacketsLost(0),
mSpaceTimeUSec(0)
{
- for (S32 i = 0; i < 8; i++)
+ for (S32 i = 0; i < EDGE_WATER_OBJECTS_COUNT; i++)
{
mEdgeWaterObjects[i] = NULL;
}
@@ -126,7 +126,7 @@ void LLWorld::resetClass()
LLViewerPartSim::getInstance()->destroyClass();
mDefaultWaterTexturep = NULL ;
- for (S32 i = 0; i < 8; i++)
+ for (S32 i = 0; i < EDGE_WATER_OBJECTS_COUNT; i++)
{
mEdgeWaterObjects[i] = NULL;
}
@@ -753,6 +753,8 @@ void LLWorld::clearAllVisibleObjects()
//clear all cached visible objects.
(*iter)->clearCachedVisibleObjects();
}
+ clearHoleWaterObjects();
+ clearEdgeWaterObjects();
}
void LLWorld::updateParticles()
@@ -917,7 +919,7 @@ void LLWorld::precullWaterObjects(LLCamera& camera, LLCullResult* cull, bool inc
}
S32 dir;
- for (dir = 0; dir < 8; dir++)
+ for (dir = 0; dir < EDGE_WATER_OBJECTS_COUNT; dir++)
{
LLVOWater* waterp = mEdgeWaterObjects[dir];
if (waterp && waterp->mDrawable)
@@ -928,6 +930,26 @@ void LLWorld::precullWaterObjects(LLCamera& camera, LLCullResult* cull, bool inc
}
}
+void LLWorld::clearHoleWaterObjects()
+{
+ for (std::list<LLPointer<LLVOWater> >::iterator iter = mHoleWaterObjects.begin();
+ iter != mHoleWaterObjects.end(); ++iter)
+ {
+ LLVOWater* waterp = (*iter).get();
+ gObjectList.killObject(waterp);
+ }
+ mHoleWaterObjects.clear();
+}
+
+void LLWorld::clearEdgeWaterObjects()
+{
+ for (S32 i = 0; i < EDGE_WATER_OBJECTS_COUNT; i++)
+ {
+ gObjectList.killObject(mEdgeWaterObjects[i]);
+ mEdgeWaterObjects[i] = NULL;
+ }
+}
+
void LLWorld::updateWaterObjects()
{
if (!gAgent.getRegion())
@@ -971,13 +993,7 @@ void LLWorld::updateWaterObjects()
}
}
- for (std::list<LLPointer<LLVOWater> >::iterator iter = mHoleWaterObjects.begin();
- iter != mHoleWaterObjects.end(); ++ iter)
- {
- LLVOWater* waterp = (*iter).get();
- gObjectList.killObject(waterp);
- }
- mHoleWaterObjects.clear();
+ clearHoleWaterObjects();
// Use the water height of the region we're on for areas where there is no region
F32 water_height = gAgent.getRegion()->getWaterHeight();
@@ -1018,7 +1034,7 @@ void LLWorld::updateWaterObjects()
(S32)(512 - (region_y - min_y)) };
S32 dir;
- for (dir = 0; dir < 8; dir++)
+ for (dir = 0; dir < EDGE_WATER_OBJECTS_COUNT; dir++)
{
S32 dim[2] = { 0 };
switch (gDirAxes[dir][0])