summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2012-10-03 17:13:18 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2012-10-03 17:13:18 -0400
commite29b66ed6ce29528f7b733c51db22a31a05d3a5f (patch)
treecc4485d5796d303a69b754a6b27c26f66eb768fc
parent5010cf72d345e60d0a367ea213dafe8727414612 (diff)
additional fixes for avoiding avatar param manipulation via wearables, setting correct state from avatar appearance
-rwxr-xr-x[-rw-r--r--]indra/llappearance/llwearabledata.cpp5
-rw-r--r--indra/llcharacter/llvisualparam.cpp1
-rwxr-xr-xindra/newview/llviewerwearable.cpp4
-rwxr-xr-xindra/newview/llvoavatarself.cpp7
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();