summaryrefslogtreecommitdiff
path: root/indra/newview/lldrawable.cpp
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2012-04-20 00:58:55 -0500
committerDave Parks <davep@lindenlab.com>2012-04-20 00:58:55 -0500
commit5ef21ba6c5b0d6c8b5f201c7d2bede983504383c (patch)
treed829f19bc766771b1adb61409fbc946c47f64797 /indra/newview/lldrawable.cpp
parentd953cce3868cf53b3f84e1fdd97119c83d3dff7d (diff)
MAINT-775 More edge case cleanup -- spinning child prims still break on deselect until the next LoD update
Diffstat (limited to 'indra/newview/lldrawable.cpp')
-rw-r--r--indra/newview/lldrawable.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index e06242055c..d2cedc7035 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -551,6 +551,8 @@ F32 LLDrawable::updateXform(BOOL undamped)
LLVector3 vec = mCurrentScale-target_scale;
+
+
if (vec*vec > MIN_INTERPOLATE_DISTANCE_SQUARED)
{ //scale change requires immediate rebuild
mCurrentScale = target_scale;
@@ -564,7 +566,12 @@ F32 LLDrawable::updateXform(BOOL undamped)
if (!isState(LLDrawable::ANIMATED_CHILD))
{
setState(LLDrawable::ANIMATED_CHILD);
- gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
+ gPipeline.markRebuild(this, LLDrawable::REBUILD_ALL, TRUE);
+ LLSpatialGroup* group = getSpatialGroup();
+ if (group)
+ {
+ gPipeline.markRebuild(group, TRUE);
+ }
}
}
else if (!getVOVolume() && !isAvatar())
@@ -577,7 +584,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
mXform.setRotation(target_rot);
mXform.setScale(LLVector3(1,1,1)); //no scale in drawable transforms (IT'S A RULE!)
mXform.updateMatrix();
-
+
if (mSpatialBridge)
{
gPipeline.markMoved(mSpatialBridge, FALSE);