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.
This commit is contained in:
Aleric Inglewood
2013-01-03 00:02:28 +01:00
parent cc276ff232
commit b0fe12f597
5 changed files with 27 additions and 14 deletions

View File

@@ -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();
}

View File

@@ -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))

View File

@@ -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<bool> 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");

View File

@@ -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;

View File

@@ -196,6 +196,7 @@
<string name="AvatarAway">Away</string>
<string name="AvatarBusy">Busy</string>
<string name="AvatarMuted">Muted</string>
<string name="AvatarLangolier">Langolier</string>
<!-- animations -->
<string name="anim_express_afraid">Afraid</string>