From 17c22d317f93abc61c68e05a36f56a0359f282ef Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 9 Nov 2017 16:09:51 +0200 Subject: MAINT-2880 Particle generator object doesn't start displaying particles, when unblocking the owner of this object --- indra/newview/llviewerobject.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'indra/newview/llviewerobject.cpp') diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 5de4029542..e86d39e9d0 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -270,7 +270,9 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe mPhysicsShapeUnknown(true), mAttachmentItemID(LLUUID::null), mLastUpdateType(OUT_UNKNOWN), - mLastUpdateCached(FALSE) + mLastUpdateCached(FALSE), + mCachedMuteListUpdateTime(0), + mCachedOwnerInMuteList(false) { if (!is_global) { @@ -5116,6 +5118,29 @@ void LLViewerObject::updateText() } } +bool LLViewerObject::isOwnerInMuteList() +{ + if (isAvatar() || mOwnerID.isNull()) + { + return false; + } + bool muted = false; + F64 now = LLFrameTimer::getTotalSeconds(); + if (now < mCachedMuteListUpdateTime) + { + muted = mCachedOwnerInMuteList; + } + else + { + muted = LLMuteList::getInstance()->isMuted(mOwnerID); + + const F64 SECONDS_BETWEEN_MUTE_UPDATES = 1; + mCachedMuteListUpdateTime = now + SECONDS_BETWEEN_MUTE_UPDATES; + mCachedOwnerInMuteList = muted; + } + return muted; +} + LLVOAvatar* LLViewerObject::asAvatar() { return NULL; -- cgit v1.3 From 8bceb809022981221baa288df673fbb2c59cdd04 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 5 Dec 2017 18:19:30 +0200 Subject: MAINT-2880 Particle generator object doesn't start displaying particles, when unblocking the owner of this object --- indra/newview/llviewerobject.cpp | 7 ++++--- indra/newview/llviewerobject.h | 2 +- indra/newview/llviewerpartsim.cpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) (limited to 'indra/newview/llviewerobject.cpp') diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index e86d39e9d0..228c686065 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5118,9 +5118,10 @@ void LLViewerObject::updateText() } } -bool LLViewerObject::isOwnerInMuteList() +bool LLViewerObject::isOwnerInMuteList(LLUUID id) { - if (isAvatar() || mOwnerID.isNull()) + LLUUID owner_id = id.isNull() ? mOwnerID : id; + if (isAvatar() || owner_id.isNull()) { return false; } @@ -5132,7 +5133,7 @@ bool LLViewerObject::isOwnerInMuteList() } else { - muted = LLMuteList::getInstance()->isMuted(mOwnerID); + muted = LLMuteList::getInstance()->isMuted(owner_id); const F64 SECONDS_BETWEEN_MUTE_UPDATES = 1; mCachedMuteListUpdateTime = now + SECONDS_BETWEEN_MUTE_UPDATES; diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 4f826b9eac..21c95d5533 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -422,7 +422,7 @@ public: void updateText(); // update text label position virtual void updateDrawable(BOOL force_damped); // force updates on static objects - bool isOwnerInMuteList(); + bool isOwnerInMuteList(LLUUID item_id = LLUUID()); void setDrawableState(U32 state, BOOL recursive = TRUE); void clearDrawableState(U32 state, BOOL recursive = TRUE); diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index e8ea0eb26d..b066793e3d 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -712,7 +712,7 @@ void LLViewerPartSim::updateSimulation() upd = FALSE; } - if(vobj && vobj->isOwnerInMuteList()) + if(vobj && vobj->isOwnerInMuteList(mViewerPartSources[i]->getOwnerUUID())) { upd = FALSE; } -- cgit v1.3