diff options
author | David Seikel | 2011-05-12 19:27:38 +1000 |
---|---|---|
committer | David Seikel | 2011-05-12 19:27:38 +1000 |
commit | 3c53aac212afba411d47efe2bb3928027b186462 (patch) | |
tree | fb5601df0213e34290219256fbf86e5b633d89ac /linden/indra/newview | |
parent | Readme rewrite. (diff) | |
download | meta-impy-3c53aac212afba411d47efe2bb3928027b186462.zip meta-impy-3c53aac212afba411d47efe2bb3928027b186462.tar.gz meta-impy-3c53aac212afba411d47efe2bb3928027b186462.tar.bz2 meta-impy-3c53aac212afba411d47efe2bb3928027b186462.tar.xz |
Temporary workaround for the "TP over 4096 sims" bug.
This is temporary, since it's not the real bug, and I want to go work on something else for a while.
Plus, the grid I have test regions set up for this bug is having athor problems right now.
Diffstat (limited to '')
-rw-r--r-- | linden/indra/newview/pipeline.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index ae0e605..ec59a1d 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp | |||
@@ -1783,6 +1783,24 @@ void LLPipeline::shiftObjects(const LLVector3 &offset) | |||
1783 | } | 1783 | } |
1784 | mShiftList.resize(0); | 1784 | mShiftList.resize(0); |
1785 | 1785 | ||
1786 | |||
1787 | // This is a workaround for the "TP more than 4096 sims" bug. | ||
1788 | // This workaround is the difference between "can't see anything" and "can't see some prims close to you". | ||
1789 | // Sa it's a worthwhile workaround for now, pending further investigation. | ||
1790 | // The actual problem is deeper. | ||
1791 | // According to my notes, the actual bug is in void LLSpatialGroup::shift(const LLVector3 &offset), or deeper. | ||
1792 | // The original workaround came from Mana Janus TWO YEARS ago, as mentioned in https://jira.secondlife.com/browse/SVC-2941? | ||
1793 | // I've just refined the placement of the workaround, in an effort to track down the real problem. | ||
1794 | // onefang, from the meta-impy viewer. | ||
1795 | LLVector3 offsetOC = offset; | ||
1796 | // don't shift objects, if teleporting more than about 4000 sims, as | ||
1797 | // for long teleports shifting objects garbles the view at the target region | ||
1798 | // if (offsetOC.lengthSquared() > 6.5e10f) // roughly 1000 sims, fer easier testing | ||
1799 | if (offsetOC.lengthSquared() > 1.05e12f) // 4000 sims, though the trigger point is being reported as 4096. | ||
1800 | offsetOC = LLVector3::zero; | ||
1801 | // End of workaround, except where offsetOC is used below. | ||
1802 | |||
1803 | |||
1786 | for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); | 1804 | for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); |
1787 | iter != LLWorld::getInstance()->getRegionList().end(); ++iter) | 1805 | iter != LLWorld::getInstance()->getRegionList().end(); ++iter) |
1788 | { | 1806 | { |
@@ -1792,7 +1810,7 @@ void LLPipeline::shiftObjects(const LLVector3 &offset) | |||
1792 | LLSpatialPartition* part = region->getSpatialPartition(i); | 1810 | LLSpatialPartition* part = region->getSpatialPartition(i); |
1793 | if (part) | 1811 | if (part) |
1794 | { | 1812 | { |
1795 | part->shift(offset); | 1813 | part->shift(offsetOC); |
1796 | } | 1814 | } |
1797 | } | 1815 | } |
1798 | } | 1816 | } |