diff options
-rwxr-xr-x[-rw-r--r--] | indra/llappearance/llwearabledata.cpp | 5 | ||||
-rw-r--r-- | indra/llcharacter/llvisualparam.cpp | 1 | ||||
-rwxr-xr-x | indra/newview/llviewerwearable.cpp | 4 | ||||
-rwxr-xr-x | indra/newview/llvoavatarself.cpp | 7 |
4 files changed, 17 insertions, 0 deletions
diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp index d70bbf286a..401b1dc192 100644..100755 --- a/indra/llappearance/llwearabledata.cpp +++ b/indra/llappearance/llwearabledata.cpp @@ -119,6 +119,11 @@ U32 LLWearableData::pushWearable(const LLWearableType::EType type, void LLWearableData::wearableUpdated(LLWearable *wearable, BOOL removed) { wearable->setUpdated(); + // FIXME DRANO avoid updating params via wearables when rendering server-baked appearance. + if (mAvatarAppearance->isUsingServerBakes() && !mAvatarAppearance->isUsingLocalAppearance()) + { + return; + } if (!removed) { pullCrossWearableValues(wearable->getType()); diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index 809b312abe..255f61b1b3 100644 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp @@ -250,6 +250,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake) if (mIsDummy) { setWeight(target_value, upload_bake); + mTargetWeight = mCurWeight; return; } diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp index f3d9b2c678..1200f65b6e 100755 --- a/indra/newview/llviewerwearable.cpp +++ b/indra/newview/llviewerwearable.cpp @@ -476,6 +476,10 @@ void LLViewerWearable::setItemID(const LLUUID& item_id) void LLViewerWearable::revertValues() { + if (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes() && !gAgentAvatarp->isUsingLocalAppearance()) + { + return; + } LLWearable::revertValues(); diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 7ca40a8752..a29ef2f3ad 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -668,6 +668,13 @@ BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight return FALSE; } + // FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables. + if (isUsingServerBakes() && !isUsingLocalAppearance()) + { + return FALSE; + } + + if (param->getCrossWearable()) { LLWearableType::EType type = (LLWearableType::EType)param->getWearableType(); |