From b0fe12f5979538af9183445d15a07f0b4f545062 Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Thu, 3 Jan 2013 00:02:28 +0100 Subject: [PATCH] Snapshot Freeze Time: add Langolier tag for new (invisible) avatars. If an avatar TP's in while you are in Freeze Time mode, they now have a visible tag with the tag 'Langolier' in it. After exiting Freeze Time mode they become visible. Before they would stay invisible. --- indra/newview/llfloatersnapshot.cpp | 2 ++ indra/newview/llspatialpartition.cpp | 4 +++ indra/newview/llvoavatar.cpp | 30 +++++++++++-------- indra/newview/llvoavatar.h | 4 ++- .../skins/default/xui/en-us/strings.xml | 1 + 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 39bdbb14b..6dcf63a74 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -2977,6 +2977,8 @@ void LLFloaterSnapshot::onClose(bool app_quitting) // Set invisible so it doesn't eat tooltips. JC gSnapshotFloaterView->setVisible(FALSE); gSavedSettings.setBOOL("SnapshotBtnState", FALSE); + gSavedSettings.setBOOL("UseFreezeTime", FALSE); + impl.updateLayout(this); destroy(); } diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 5c41199c3..02e2d8a15 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -4421,6 +4421,10 @@ public: } } + else if (avatar->isLangolier()) + { + skip_check = true; + } } if (!skip_check && vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal)) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 7787fb17b..16e2712c1 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1011,7 +1011,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, mAttachmentGeometryBytes(0), mAttachmentSurfaceArea(0.f), mTurning(FALSE), - mFreezeTimeHidden(freeze_time), + mFreezeTimeLangolier(freeze_time), mFreezeTimeDead(false), mPelvisToFoot(0.f), mLastSkeletonSerialNum( 0 ), @@ -1238,7 +1238,7 @@ LLVOAvatar::~LLVOAvatar() void LLVOAvatar::markDead() { static const LLCachedControl freeze_time("FreezeTime", false); - if (freeze_time && !mFreezeTimeHidden) + if (freeze_time && !mFreezeTimeLangolier) { // Delay the call to this function until FreezeTime is reset, otherwise avatars disappear from the frozen scene. mFreezeTimeDead = true; @@ -2884,11 +2884,6 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) return; } - if (mFreezeTimeHidden) - { - return; - } - checkTextureLoading() ; // force immediate pixel area update on avatars using last frames data (before drawable or camera updates) @@ -3682,6 +3677,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) } bool is_friend = LLAvatarTracker::instance().isBuddy(getID()); bool is_cloud = getIsCloud(); + bool is_langolier = isLangolier(); if (is_appearance != mNameAppearance) { @@ -3707,7 +3703,8 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) || is_muted != mNameMute || is_appearance != mNameAppearance || is_friend != mNameFriend - || is_cloud != mNameCloud) + || is_cloud != mNameCloud + || is_langolier != mNameLangolier) { LLColor4 name_tag_color = getNameTagColor(is_friend); @@ -3717,7 +3714,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) std::string firstnameText; std::string lastnameText; - if (is_away || is_muted || is_busy || is_appearance || !idle_string.empty()) + if (is_away || is_muted || is_busy || is_appearance || is_langolier || !idle_string.empty()) { std::string line; if (is_away) @@ -3740,7 +3737,12 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) line += LLTrans::getString("AvatarEditingAppearance"); //"(Editing Appearance)" line += ", "; } - if (is_cloud) + if (is_langolier) + { + line += LLTrans::getString("AvatarLangolier"); //"Langolier" + line += ", "; + } + else if (is_cloud) { line += LLTrans::getString("LoadingData"); //"Loading..." line += ", "; @@ -3867,6 +3869,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) mNameAppearance = is_appearance; mNameFriend = is_friend; mNameCloud = is_cloud; + mNameLangolier = is_langolier; mTitle = title ? title->getString() : ""; LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR); new_name = TRUE; @@ -4104,13 +4107,14 @@ bool LLVOAvatar::isVisuallyMuted() const return LLMuteList::getInstance()->isMuted(getID()) || (mAttachmentGeometryBytes > max_attachment_bytes && max_attachment_bytes > 0) || - (mAttachmentSurfaceArea > max_attachment_area && max_attachment_area > 0.f); + (mAttachmentSurfaceArea > max_attachment_area && max_attachment_area > 0.f) || + isLangolier(); } void LLVOAvatar::resetFreezeTime() { bool dead = mFreezeTimeDead; - mFreezeTimeHidden = mFreezeTimeDead = false; + mFreezeTimeLangolier = mFreezeTimeDead = false; if (dead) { markDead(); @@ -7591,7 +7595,7 @@ void LLVOAvatar::updateRuthTimer(bool loading) return; } - if (mPreviousFullyLoaded || mFreezeTimeHidden) + if (mPreviousFullyLoaded) { mRuthTimer.reset(); debugAvatarRezTime("AvatarRezCloudNotification","became cloud"); diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 789d69590..c2ba5f8dd 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -341,6 +341,7 @@ public: BOOL hasGray() const; S32 getRezzedStatus() const; // 0 = cloud, 1 = gray, 2 = fully textured. void updateRezzedStatusTimers(); + bool isLangolier() const { return mFreezeTimeLangolier; } bool isFrozenDead() const { return mFreezeTimeDead; } S32 mLastRezzedStatus; @@ -359,7 +360,7 @@ private: S32 mVisualComplexity; LLFrameTimer mFullyLoadedTimer; LLFrameTimer mRuthTimer; - bool mFreezeTimeHidden; // True when this object was created during snapshot FreezeTime mode, and that mode is STILL active. + bool mFreezeTimeLangolier; // True when this avatar was created during snapshot FreezeTime mode, and that mode is still active. bool mFreezeTimeDead; // True when the avatar was marked dead (ie, TP-ed away) while in FreezeTime mode. protected: LLFrameTimer mInvisibleTimer; @@ -1016,6 +1017,7 @@ private: bool mNameAppearance; bool mNameFriend; bool mNameCloud; + bool mNameLangolier; F32 mNameAlpha; BOOL mRenderGroupTitles; diff --git a/indra/newview/skins/default/xui/en-us/strings.xml b/indra/newview/skins/default/xui/en-us/strings.xml index 1570f8114..12c68e523 100644 --- a/indra/newview/skins/default/xui/en-us/strings.xml +++ b/indra/newview/skins/default/xui/en-us/strings.xml @@ -196,6 +196,7 @@ Away Busy Muted + Langolier Afraid