diff options
| author | Andrey Lihatskiy <alihatskiy@productengine.com> | 2020-04-26 21:57:40 +0300 |
|---|---|---|
| committer | Andrey Lihatskiy <alihatskiy@productengine.com> | 2020-04-26 21:57:40 +0300 |
| commit | a0d7d873552dc1611eb4f8957cf99e777b199dbe (patch) | |
| tree | 4d2bff47d6d7bd253076473c85f43f17eedbc12c /indra/newview/llworld.cpp | |
| parent | 2ea5c5986a467e253ad0131b4af0faee23b263a4 (diff) | |
| parent | d7f1c88c35849e56f5b352f13c16a08467d1533b (diff) | |
Merge branch 'master' into DRTVWR-460
# Conflicts:
# indra/llmath/llquaternion.h
# indra/newview/lldrawpoolwater.cpp
# indra/newview/lljoystickbutton.cpp
# indra/newview/llvosky.cpp
# indra/newview/skins/default/textures/textures.xml
Diffstat (limited to 'indra/newview/llworld.cpp')
| -rw-r--r-- | indra/newview/llworld.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 89f5eb86b3..8989bae96a 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -873,6 +873,57 @@ void LLWorld::waterHeightRegionInfo(std::string const& sim_name, F32 water_heigh } } +void LLWorld::precullWaterObjects(LLCamera& camera, LLCullResult* cull, bool include_void_water) +{ + if (!gAgent.getRegion()) + { + return; + } + + if (mRegionList.empty()) + { + LL_WARNS() << "No regions!" << LL_ENDL; + return; + } + + for (region_list_t::iterator iter = mRegionList.begin(); + iter != mRegionList.end(); ++iter) + { + LLViewerRegion* regionp = *iter; + LLVOWater* waterp = regionp->getLand().getWaterObj(); + if (waterp && waterp->mDrawable) + { + waterp->mDrawable->setVisible(camera); + cull->pushDrawable(waterp->mDrawable); + } + } + + if (include_void_water) + { + for (std::list<LLPointer<LLVOWater> >::iterator iter = mHoleWaterObjects.begin(); + iter != mHoleWaterObjects.end(); ++ iter) + { + LLVOWater* waterp = (*iter).get(); + if (waterp && waterp->mDrawable) + { + waterp->mDrawable->setVisible(camera); + cull->pushDrawable(waterp->mDrawable); + } + } + } + + S32 dir; + for (dir = 0; dir < 8; dir++) + { + LLVOWater* waterp = mEdgeWaterObjects[dir]; + if (waterp && waterp->mDrawable) + { + waterp->mDrawable->setVisible(camera); + cull->pushDrawable(waterp->mDrawable); + } + } +} + void LLWorld::updateWaterObjects() { if (!gAgent.getRegion()) |
