From 12e08417bfdf5d50feea544a54bbb333ad01acce Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Tue, 28 Jun 2011 12:41:12 -0500
Subject: SH-1169 Fix for convex decompositions not working post
 mesh-asset-deprecation work. (also default SLM usage to on)

---
 indra/llprimitive/llmodel.cpp           |  4 ++--
 indra/newview/app_settings/settings.xml |  2 +-
 indra/newview/llfloatermodelpreview.cpp | 10 ++++++----
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp
index 972f256076..da78b30b34 100644
--- a/indra/llprimitive/llmodel.cpp
+++ b/indra/llprimitive/llmodel.cpp
@@ -1798,7 +1798,7 @@ bool LLModel::loadModel(std::istream& is)
 		is.seekg(cur_pos);
 	}
 
-	if (lod == LLModel::LOD_PHYSICS)
+	if (lod == LLModel::LOD_HIGH || lod == LLModel::LOD_PHYSICS)
 	{
 		std::ios::pos_type cur_pos = is.tellg();
 		loadDecomposition(header, is);
@@ -2015,7 +2015,7 @@ LLModel::Decomposition::Decomposition(LLSD& data)
 
 void LLModel::Decomposition::fromLLSD(LLSD& decomp)
 {
-	if (decomp.has("HullList"))
+	if (decomp.has("HullList") && decomp.has("Positions"))
 	{
 		// updated for const-correctness. gcc is picky about this type of thing - Nyx
 		const LLSD::Binary& hulls = decomp["HullList"].asBinary();
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index cf07350d85..3c309f93bc 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5587,7 +5587,7 @@
     <key>Type</key>
     <string>Boolean</string>
     <key>Value</key>
-    <real>0</real>
+    <real>1</real>
   </map>
   <key>MeshUploadLogXML</key>
   <map>
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 0006e3423b..67841620ea 100644
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -1968,10 +1968,6 @@ bool LLModelLoader::loadFromSLM(const std::string& filename)
 					mPreview->critiqueRigForUploadApplicability( loaded_model->mSkinInfo.mJointNames );					
 				}
 			}
-			else
-			{
-				return false;
-			}
 		}
 	}	
 
@@ -1980,6 +1976,12 @@ bool LLModelLoader::loadFromSLM(const std::string& filename)
 		return false;
 	}
 
+	if (model[LLModel::LOD_PHYSICS].empty())
+	{ //no explicit physics block, copy HIGH_LOD into physics array to recover convex decomp
+		model[LLModel::LOD_PHYSICS] = model[LLModel::LOD_HIGH];
+	}
+
+
 	//load instance list
 	model_instance_list instance_list;
 
-- 
cgit v1.2.3