summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llvoavatar.cpp66
-rw-r--r--indra/newview/llvoavatar.h9
2 files changed, 69 insertions, 6 deletions
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e2205b6b5f..c19a6ab0e0 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3731,7 +3731,7 @@ void LLVOAvatar::updateAnimationDebugText()
}
else if (object->isAttachment())
{
- name += "(" + getAttachmentItemName() + ")";
+ name += "(att:" + getAttachmentItemName() + ")";
}
else
{
@@ -10477,14 +10477,70 @@ void LLVOAvatar::setVisualMuteSettings(VisualMuteSettings set)
LLRenderMuteList::getInstance()->saveVisualMuteSetting(getID(), S32(set));
}
+void LLVOAvatar::setOverallAppearanceNormal()
+{
+ resetSkeleton(false);
+ for (auto it = mJellyAnims.begin(); it != mJellyAnims.end(); ++it)
+ {
+ bool is_playing = (mPlayingAnimations.find(*it) != mPlayingAnimations.end());
+ LL_DEBUGS("Avatar") << "jelly anim " << *it << " " << is_playing << LL_ENDL;
+ if (!is_playing)
+ {
+ // Anim was not requested for this av by sim, but may be playing locally
+ stopMotion(*it);
+ }
+ }
+ mJellyAnims.clear();
+}
+
+void LLVOAvatar::setOverallAppearanceJellyDoll()
+{
+ resetSkeleton(false);
+ // stop current animations
+ {
+ for ( LLVOAvatar::AnimIterator anim_it= mPlayingAnimations.begin();
+ anim_it != mPlayingAnimations.end();
+ ++anim_it)
+ {
+ if (anim_it->first != ANIM_AGENT_STAND)
+ {
+ stopMotion(anim_it->first);
+ }
+ }
+ }
+ // start the default stand
+ bool stand_is_playing = (mPlayingAnimations.find(ANIM_AGENT_STAND) != mPlayingAnimations.end());
+ if (!stand_is_playing)
+ {
+ startMotion(ANIM_AGENT_STAND, 5.0f);
+ mJellyAnims.insert(ANIM_AGENT_STAND);
+ }
+ processAnimationStateChanges();
+}
+
+void LLVOAvatar::setOverallAppearanceInvisible()
+{
+}
+
void LLVOAvatar::updateOverallAppearance()
{
- AvatarOverallAppearance new_val = getOverallAppearance();
- if (new_val != mOverallAppearance)
+ AvatarOverallAppearance new_overall = getOverallAppearance();
+ if (new_overall != mOverallAppearance)
{
- updateAttachmentOverrides();
+ switch(new_overall)
+ {
+ case AOA_NORMAL:
+ setOverallAppearanceNormal();
+ break;
+ case AOA_JELLYDOLL:
+ setOverallAppearanceJellyDoll();
+ break;
+ case AOA_INVISIBLE:
+ setOverallAppearanceInvisible();
+ break;
+ }
+ mOverallAppearance = new_overall;
}
- mOverallAppearance = new_val;
}
// Based on isVisuallyMuted(), but has 3 possible results.
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index a73b48863b..08f7706506 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -459,9 +459,16 @@ public:
AOA_JELLYDOLL,
AOA_INVISIBLE
};
+
AvatarOverallAppearance getOverallAppearance() const;
+ void setOverallAppearanceNormal();
+ void setOverallAppearanceJellyDoll();
+ void setOverallAppearanceInvisible();
+
void updateOverallAppearance();
-
+
+ std::set<LLUUID> mJellyAnims;
+
U32 renderRigid();
U32 renderSkinned();
F32 getLastSkinTime() { return mLastSkinTime; }