From 7f2cf1fa9cf7c09af8eeab3aa077eb0a9922d631 Mon Sep 17 00:00:00 2001 From: Nyx Linden Date: Thu, 30 May 2013 17:44:51 -0400 Subject: SH-4147 FIX Macro avatar hover gets reset on relog Hover minimum enforcement was getting triggered on relog for macro avatars before the joint offsets were applied when loading the avatar. Added code to verify that all attachments in COF have been rezzed, and all attached objects are not in the process of being rebuilt to the enforcement code. This should verify that we only apply the hover value enforcement when all rigged meshes are actually loaded before enforcing minimum hover value --- indra/newview/llviewerobject.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'indra/newview/llviewerobject.cpp') diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 064e96e394..63de1ab77a 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5038,6 +5038,28 @@ void LLViewerObject::clearDrawableState(U32 state, BOOL recursive) } } +BOOL LLViewerObject::isDrawableState(U32 state, BOOL recursive) const +{ + BOOL matches = FALSE; + if (mDrawable) + { + matches = mDrawable->isState(state); + } + if (recursive) + { + for (child_list_t::const_iterator iter = mChildList.begin(); + (iter != mChildList.end()) && matches; iter++) + { + LLViewerObject* child = *iter; + matches &= child->isDrawableState(state, recursive); + } + } + + return matches; +} + + + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // RN: these functions assume a 2-level hierarchy //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -- cgit v1.3 From ac6797c71ad2f75f9f34b3d6b8da4948825e6d57 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 25 Sep 2013 13:01:55 -0400 Subject: SH-3455 WIP - moved setAvatarObject() to run after the self av constructor. Disabled sendAgentWearablesUpdate. --- indra/newview/llagentwearables.cpp | 9 +++++++-- indra/newview/llviewerobject.cpp | 2 ++ indra/newview/llvoavatarself.cpp | 2 -- 3 files changed, 9 insertions(+), 4 deletions(-) (limited to 'indra/newview/llviewerobject.cpp') diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 77fd66e4ba..5a059008c4 100755 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -182,9 +182,11 @@ void LLAgentWearables::initClass() void LLAgentWearables::setAvatarObject(LLVOAvatarSelf *avatar) { llassert(avatar); - avatar->outputRezTiming("Sending wearables request"); - sendAgentWearablesRequest(); setAvatarAppearance(avatar); + gAgentWearables.notifyLoadingStarted(); + callAfterCategoryFetch(LLAppearanceMgr::instance().getCOF(), + boost::bind(&LLAppearanceMgr::updateAppearanceFromCOF, + LLAppearanceMgr::getInstance(), true, true, no_op)); } // wearables @@ -302,6 +304,8 @@ void LLAgentWearables::addWearabletoAgentInventoryDone(const LLWearableType::ETy // SUNSHINE CLEANUP dead? void LLAgentWearables::sendAgentWearablesUpdate() { + return; // try as NO_OP // SUNSHINE CLEANUP +#if 0 // First make sure that we have inventory items for each wearable for (S32 type=0; type < LLWearableType::WT_COUNT; ++type) { @@ -372,6 +376,7 @@ void LLAgentWearables::sendAgentWearablesUpdate() lldebugs << " " << LLWearableType::getTypeLabel((LLWearableType::EType)type) << ": " << (wearable ? wearable->getAssetID() : LLUUID::null) << llendl; } gAgent.sendReliableMessage(); +#endif } void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32 index, BOOL send_update, diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 91efed1508..dc8acc91a9 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -57,6 +57,7 @@ #include "llaudiosourcevo.h" #include "llagent.h" #include "llagentcamera.h" +#include "llagentwearables.h" #include "llbbox.h" #include "llbox.h" #include "llcylinder.h" @@ -140,6 +141,7 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco { gAgentAvatarp = new LLVOAvatarSelf(id, pcode, regionp); gAgentAvatarp->initInstance(); + gAgentWearables.setAvatarObject(gAgentAvatarp); } else { diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 97429329a8..498f8c8277 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -161,8 +161,6 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id, mRegionCrossingCount(0), mInitialBakesLoaded(false) { - gAgentWearables.setAvatarObject(this); - mMotionController.mIsSelf = TRUE; lldebugs << "Marking avatar as self " << id << llendl; -- cgit v1.3