summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2018-09-27 19:34:41 +0100
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2018-09-27 19:34:41 +0100
commit4d4255c27b45ed5e32fe7c4870e2ce3ed10cb140 (patch)
tree50a69d38060aca293aed567e5149597e360128bb /indra/newview
parent963945b3ab258ea445e1d9757fc5a89ce397ff7b (diff)
SL-1350 - keep control avatar rotation synced to corresponding root drawable
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llcontrolavatar.cpp11
-rw-r--r--indra/newview/lldrawable.cpp5
-rw-r--r--indra/newview/llvoavatar.cpp3
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
{