summaryrefslogtreecommitdiff
path: root/indra/newview/llspatialpartition.cpp
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2010-09-20 18:45:56 -0500
committerDave Parks <davep@lindenlab.com>2010-09-20 18:45:56 -0500
commitc42ed54b0a532cb4e0ad30a1b0b5038cef9938f2 (patch)
tree39eb08c897f9e59fe448a1f63b354f83b7309f0b /indra/newview/llspatialpartition.cpp
parent2c4c1c47bce3db7420f0eb27bdaa7598fbbbb65a (diff)
Stop using ll_aligned_malloc/free in llvolume.
Fix for garbage data in vertex weight array crashing software skinning. Proper integration of picking for rigged attachhments. Optimization in LLDrawable::updateDistance (don't call updateRelativeXform, just use spatial group position).
Diffstat (limited to 'indra/newview/llspatialpartition.cpp')
-rw-r--r--indra/newview/llspatialpartition.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 191cdac981..0f9f35dc57 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -3121,9 +3121,11 @@ void renderRaycast(LLDrawable* drawablep)
LLVOVolume* vobj = drawablep->getVOVolume();
LLVolume* volume = vobj->getVolume();
+ bool transform = true;
if (drawablep->isState(LLDrawable::RIGGED))
{
- volume = NULL;
+ volume = vobj->getRiggedVolume();
+ transform = false;
}
if (volume)
@@ -3140,8 +3142,16 @@ void renderRaycast(LLDrawable* drawablep)
glMultMatrixf((F32*) vobj->getRelativeXform().mMatrix);
LLVector3 start, end;
- start = vobj->agentPositionToVolume(gDebugRaycastStart);
- end = vobj->agentPositionToVolume(gDebugRaycastEnd);
+ if (transform)
+ {
+ start = vobj->agentPositionToVolume(gDebugRaycastStart);
+ end = vobj->agentPositionToVolume(gDebugRaycastEnd);
+ }
+ else
+ {
+ start = gDebugRaycastStart;
+ end = gDebugRaycastEnd;
+ }
LLVector4a starta, enda;
starta.load3(start.mV);