summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2013-08-30 15:55:20 -0500
committerDave Parks <davep@lindenlab.com>2013-08-30 15:55:20 -0500
commitcacefaf2fc1b95557aca62dc69dbe3744c6424b0 (patch)
treedf40cd0f4ca2aec9bd57591733441bc2a4115610 /indra/newview
parentf638fc803dbd53985253237efb12b1707f42d49d (diff)
MAINT-2811 Fix for infinite loop on octree code during teleport.
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llviewermenu.cpp2
-rwxr-xr-xindra/newview/llviewerpartsim.cpp4
-rwxr-xr-xindra/newview/llviewerpartsim.h4
-rwxr-xr-xindra/newview/llvopartgroup.cpp21
4 files changed, 21 insertions, 10 deletions
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 33d4b65d4a..c6c1090f45 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1073,8 +1073,6 @@ class LLAdvancedCheckInfoDisplay : public view_listener_t
U32 info_display = info_display_from_string( userdata.asString() );
bool new_value = false;
- LL_INFOS("ViewerMenu") << "check " << userdata.asString() << LL_ENDL;
-
if ( info_display != 0 )
{
new_value = LLPipeline::toggleRenderDebugControl( (void*)info_display );
diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
index 96cd43a8ab..163c90019f 100755
--- a/indra/newview/llviewerpartsim.cpp
+++ b/indra/newview/llviewerpartsim.cpp
@@ -160,7 +160,11 @@ LLViewerPartGroup::LLViewerPartGroup(const LLVector3 &center_agent, const F32 bo
}
mVOPartGroupp->setViewerPartGroup(this);
mVOPartGroupp->setPositionAgent(getCenterAgent());
+
+ mBoxSide = box_side;
+
F32 scale = box_side * 0.5f;
+
mVOPartGroupp->setScale(LLVector3(scale,scale,scale));
//gPipeline.addObject(mVOPartGroupp);
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h
index 095de2060c..2daa07ed8c 100755
--- a/indra/newview/llviewerpartsim.h
+++ b/indra/newview/llviewerpartsim.h
@@ -105,6 +105,9 @@ public:
void shift(const LLVector3 &offset);
+ F32 getBoxRadius() { return mBoxRadius; }
+ F32 getBoxSide() { return mBoxSide; }
+
typedef std::vector<LLViewerPart*> part_list_t;
part_list_t mParticles;
@@ -125,6 +128,7 @@ public:
protected:
LLVector3 mCenterAgent;
F32 mBoxRadius;
+ F32 mBoxSide;
LLVector3 mMinObjPos;
LLVector3 mMaxObjPos;
diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp
index a65de0c047..1630b5d484 100755
--- a/indra/newview/llvopartgroup.cpp
+++ b/indra/newview/llvopartgroup.cpp
@@ -176,24 +176,28 @@ BOOL LLVOPartGroup::isActive() const
F32 LLVOPartGroup::getBinRadius()
{
- return mScale.mV[0]*2.f;
+ return mViewerPartGroupp->getBoxSide();
}
void LLVOPartGroup::updateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax)
{
const LLVector3& pos_agent = getPositionAgent();
- newMin.load3( (pos_agent - mScale).mV);
- newMax.load3( (pos_agent + mScale).mV);
+ LLVector4a scale;
+ LLVector4a p;
+
+ p.load3(pos_agent.mV);
+
+ scale.splat(mScale.mV[0]+mViewerPartGroupp->getBoxSide()*0.5f);
+
+ newMin.setSub(p, scale);
+ newMax.setAdd(p,scale);
llassert(newMin.isFinite3());
llassert(newMax.isFinite3());
- LLVector4a pos;
- pos.load3(pos_agent.mV);
-
- llassert(pos.isFinite3());
- mDrawable->setPositionGroup(pos);
+ llassert(p.isFinite3());
+ mDrawable->setPositionGroup(p);
}
void LLVOPartGroup::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
@@ -459,6 +463,7 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable)
}
//record max scale (used to stretch bounding box for visibility culling)
+
mScale.set(max_scale, max_scale, max_scale);
mDrawable->movePartition();