From 4d4255c27b45ed5e32fe7c4870e2ce3ed10cb140 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 27 Sep 2018 19:34:41 +0100 Subject: SL-1350 - keep control avatar rotation synced to corresponding root drawable --- indra/newview/llcontrolavatar.cpp | 11 ++++++++++- indra/newview/lldrawable.cpp | 5 ++++- indra/newview/llvoavatar.cpp | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) (limited to 'indra') 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(this); if (cav) { - cav->matchVolumeTransform(); + // SL-1350: Moved to LLDrawable::updateXform() + //cav->matchVolumeTransform(); } else { -- cgit v1.2.3