From c964633a3594c0f2dca8385958a51c471a7ea0db Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 23 Nov 2015 14:52:07 -0500
Subject: [PATCH] SL-271 WIP - skip rendering bones with no end (set as 0
 length). Show bones if show joints is enabled in mesh upload preview.

---
 indra/llappearance/llavatarappearance.cpp |  2 +-
 indra/newview/llfloatermodelpreview.cpp   | 30 ++++++++++++-----------
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index de541add97a..ba4dbc30fd6 100755
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -1578,7 +1578,7 @@ BOOL LLAvatarBoneInfo::parseXml(LLXmlTreeNode* node)
 	if (!node->getFastAttributeVector3(end_string, mEnd))
 	{
 		LL_WARNS() << "Bone without end " << mName << LL_ENDL;
-        mEnd = LLVector3(1.0f, 0.0f, 0.0f);
+        mEnd = LLVector3(0.0f, 0.0f, 0.0f);
 	}
 
 	static LLStdStringHandle support_string = LLXmlTree::addAttributeString("support");
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 9ab81a74a18..deb3ccebcfb 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -3977,20 +3977,6 @@ BOOL LLModelPreview::render()
 															  LLVector3::z_axis,																	// up
 															  target_pos);											// point of interest
 
-			if (joint_positions)
-			{
-				LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
-				if (shader)
-				{
-					gDebugProgram.bind();
-				}
-				getPreviewAvatar()->renderCollisionVolumes();
-				if (shader)
-				{
-					shader->bind();
-				}
-			}
-
 			for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter)
 			{
 				for (LLModelLoader::model_instance_list::iterator model_iter = iter->second.begin(); model_iter != iter->second.end(); ++model_iter)
@@ -4074,6 +4060,22 @@ BOOL LLModelPreview::render()
 					}
 				}
 			}
+
+			if (joint_positions)
+			{
+				LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+				if (shader)
+				{
+					gDebugProgram.bind();
+				}
+				getPreviewAvatar()->renderCollisionVolumes();
+				getPreviewAvatar()->renderBones();
+				if (shader)
+				{
+					shader->bind();
+				}
+			}
+
 		}
 	}
 
-- 
GitLab