From 7318bd61f7a7ea89e471a6e0f3cc310786a3b41c Mon Sep 17 00:00:00 2001
From: Anchor Linden <anchor@lindenlab.com>
Date: Thu, 19 Jul 2018 22:46:03 +0530
Subject: [PATCH] [MAINT-8873] - check for bakesOnMesh enabled sim feature,
 before creating universal wearable type

---
 indra/newview/llagentwearables.cpp | 6 ++++++
 indra/newview/llviewerregion.cpp   | 6 ++++++
 indra/newview/llviewerregion.h     | 2 ++
 3 files changed, 14 insertions(+)

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 170e4063a15..15e4de8f690 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1538,6 +1538,12 @@ void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, con
 {
 	if (type == LLWearableType::WT_INVALID || type == LLWearableType::WT_NONE) return;
 
+	if (type == LLWearableType::WT_UNIVERSAL && !gAgent.getRegion()->bakesOnMeshEnabled())
+	{
+		LL_WARNS("Inventory") << "Can't create WT_UNIVERSAL type " << LL_ENDL;
+		return;
+	}
+
 	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp);
 	LLAssetType::EType asset_type = wearable->getAssetType();
 	LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index feaafad2e12..98320247e00 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -3174,6 +3174,12 @@ bool LLViewerRegion::meshUploadEnabled() const
 		mSimulatorFeatures["MeshUploadEnabled"].asBoolean());
 }
 
+bool LLViewerRegion::bakesOnMeshEnabled() const
+{
+	return (mSimulatorFeatures.has("BakesOnMeshEnabled") &&
+		mSimulatorFeatures["BakesOnMeshEnabled"].asBoolean());
+}
+
 bool LLViewerRegion::meshRezEnabled() const
 {
 	return (mSimulatorFeatures.has("MeshRezEnabled") &&
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 302647215f7..9405b028182 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -304,6 +304,8 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	bool meshRezEnabled() const;
 	bool meshUploadEnabled() const;
 
+	bool bakesOnMeshEnabled() const;
+
 	// has region received its simulator features list? Requires an additional query after caps received.
 	void setSimulatorFeaturesReceived(bool);
 	bool simulatorFeaturesReceived() const;
-- 
GitLab