diff options
author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2018-09-27 19:34:41 +0100 |
---|---|---|
committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2018-09-27 19:34:41 +0100 |
commit | 4d4255c27b45ed5e32fe7c4870e2ce3ed10cb140 (patch) | |
tree | 50a69d38060aca293aed567e5149597e360128bb /indra/newview | |
parent | 963945b3ab258ea445e1d9757fc5a89ce397ff7b (diff) |
SL-1350 - keep control avatar rotation synced to corresponding root drawable
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llcontrolavatar.cpp | 11 | ||||
-rw-r--r-- | indra/newview/lldrawable.cpp | 5 | ||||
-rw-r--r-- | indra/newview/llvoavatar.cpp | 3 |
3 files changed, 16 insertions, 3 deletions
diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index 0efed8ab7c..a620f2abe9 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -175,7 +175,16 @@ void LLControlAvatar::matchVolumeTransform() // complexity info and such line up better. Should defer // this until avatars also get fixed. - LLQuaternion obj_rot = mRootVolp->getRotation(); + LLQuaternion obj_rot; + if (mRootVolp->mDrawable) + { + obj_rot = mRootVolp->mDrawable->getRotation(); + } + else + { + obj_rot = mRootVolp->getRotation(); + } + LLMatrix3 bind_mat; LLQuaternion bind_rot; diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 55db721ccf..8c6cbc020b 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -52,7 +52,6 @@ #include "llviewerwindow.h" #include "llvocache.h" #include "llcontrolavatar.h" -#include "llcallstack.h" #include "lldrawpoolavatar.h" const F32 MIN_INTERPOLATE_DISTANCE_SQUARED = 0.001f * 0.001f; @@ -730,6 +729,10 @@ 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 (isRoot() && mVObjp->isAnimatedObject() && mVObjp->getControlAvatar()) + { + mVObjp->getControlAvatar()->matchVolumeTransform(); + } if (mSpatialBridge) { diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index dba99c7e98..1f72aed5b4 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4168,7 +4168,8 @@ void LLVOAvatar::updateRootPositionAndRotation(LLAgent& agent, F32 speed, bool w LLControlAvatar *cav = dynamic_cast<LLControlAvatar*>(this); if (cav) { - cav->matchVolumeTransform(); + // SL-1350: Moved to LLDrawable::updateXform() + //cav->matchVolumeTransform(); } else { |