diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llcontrolavatar.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index 7537e91477..6bd7de12f3 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -95,7 +95,7 @@ void LLControlAvatar::matchVolumeTransform() LLVector3 vol_pos = mRootVolp->getRenderPosition(); LLVector3 pos_box_offset; - pos_box_offset.clear(); + LLVector3 box_offset; // Fix up position if needed to prevent visual encroachment if (box_valid_and_non_zero(getLastAnimExtents())) // wait for state to settle down @@ -116,18 +116,21 @@ void LLControlAvatar::matchVolumeTransform() if (offset_dist > MAX_LEGAL_OFFSET) { F32 target_dist = (offset_dist - MAX_LEGAL_OFFSET); - pos_box_offset *= target_dist/offset_dist; + box_offset = (target_dist/offset_dist)*pos_box_offset; } - //LL_DEBUGS("FixBox") << getFullname() << " fixup needed for offset " - // << pos_box_offset[0] << "," << pos_box_offset[1] << "," << pos_box_offset[2] - // << " current fixup " - // << mPositionConstraintFixup[0] << "," << mPositionConstraintFixup[1] << "," << mPositionConstraintFixup[2] - // << " dist " << offset_dist << LL_ENDL; } - mPositionConstraintFixup = pos_box_offset; + mPositionConstraintFixup = box_offset; + + // Currently if you're doing something like playing an + // animation that moves the pelvis (on an avatar or + // animated object), the name tag and debug text will be + // left behind. Ideally setPosition() would follow the + // skeleton around in a smarter way, so name tags, + // complexity info and such line up better. Should defer + // this until avatars also get fixed. + setPositionAgent(vol_pos); - setPositionAgent(vol_pos + mPositionConstraintFixup); LLQuaternion obj_rot = mRootVolp->getRotation(); LLQuaternion result_rot = obj_rot; setRotation(result_rot); |