From 4bcf1b911a4ea8e8ac8a6322918929732ec1b82d Mon Sep 17 00:00:00 2001 From: Nyx Linden <nyx@lindenlab.com> Date: Wed, 3 Apr 2013 19:04:57 -0400 Subject: [PATCH] SH-4051 REVERT teen accounts unable to remove underclothes even when switching outfits Reverting fix as additional problems were found that could lead to even accidental nudity. This fix is not required for the current release as it is not a regression. Will review options for fixing for the next release. --- indra/newview/llagentwearables.cpp | 50 ++++++------------------------ indra/newview/llagentwearables.h | 2 +- 2 files changed, 10 insertions(+), 42 deletions(-) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index de9afe2e085..c88694ef76b 100755 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1124,19 +1124,14 @@ void LLAgentWearables::addWearableToAgentInventory(LLPointer<LLInventoryCallback cb); } -void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index, BOOL will_replace) +void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index) { - if (gAgent.isTeen() && + if (gAgent.isTeen() && (type == LLWearableType::WT_UNDERSHIRT || type == LLWearableType::WT_UNDERPANTS)) { // Can't take off underclothing in simple UI mode or on PG accounts - - if (getWearableCount(type) < 2 && !will_replace) - { - // if there is 0 or 1 undergarment worn, and we're not going to be immediately adding another, - // we cannot allow the removal for teen accounts - return; - } + // TODO: enable the removing of a single undershirt/underpants if multiple are worn. - Nyx + return; } if (getWearableCount(type) == 0) { @@ -1244,31 +1239,6 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it { llinfos << "setWearableOutfit() start" << llendl; - S32 count = wearables.count(); - llassert(items.count() == count); - S32 i; - - bool has_undershirt = false; - bool has_underpants = false; - - for (i = 0; i < count; i++) - { - LLViewerWearable* new_wearable = wearables[i]; - if (new_wearable) - { - const LLWearableType::EType type = new_wearable->getType(); - if (type == LLWearableType::WT_UNDERSHIRT) - { - has_undershirt = true; - } - if (type == LLWearableType::WT_UNDERPANTS) - { - has_underpants = true; - } - } - } - - // TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later if (remove) { @@ -1278,17 +1248,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it { if (LLWearableType::getAssetType((LLWearableType::EType)type) == LLAssetType::AT_CLOTHING) { - bool will_replace = false; - if ((type == LLWearableType::WT_UNDERSHIRT && has_undershirt) || - (type == LLWearableType::WT_UNDERPANTS && has_underpants)) - { - will_replace = true; - } - removeWearable((LLWearableType::EType)type, true, 0, will_replace); + removeWearable((LLWearableType::EType)type, true, 0); } } } + S32 count = wearables.count(); + llassert(items.count() == count); + + S32 i; for (i = 0; i < count; i++) { LLViewerWearable* new_wearable = wearables[i]; diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index f2f224a5736..5be46486367 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -146,7 +146,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearable // Removing wearables //-------------------------------------------------------------------- public: - void removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/, BOOL will_replace = false); + void removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/); private: void removeWearableFinal(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/); protected: -- GitLab