summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorprep linden <prep@lindenlab.com>2011-01-10 11:04:13 -0500
committerprep linden <prep@lindenlab.com>2011-01-10 11:04:13 -0500
commite8423f150ffdd965da5b90ee625a8afc1519626f (patch)
tree78de6aa1af2fdb86e1efb6d7f83d0f66b7a45bf1 /indra
parentf71228bf90b54f02f52b315d8a81c0cf296ba4ae (diff)
Added support for parsing a matrix sids translation elements for joints
Diffstat (limited to 'indra')
-rwxr-xr-xindra/newview/llfloatermodelpreview.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index c0b5b7cfa6..57b648769d 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -1789,7 +1789,25 @@ void LLModelLoader::processJointNode( domNode* pNode, std::map<std::string,LLMat
daeElement* pTranslateElement = getChildFromElement( pNode, "translate" );
if ( !pTranslateElement || pTranslateElement->typeID() != domTranslate::ID() )
{
- llwarns<< "The found element is not a translate node" <<llendl;
+ //llwarns<< "The found element is not a translate node" <<llendl;
+ daeSIDResolver jointResolver( pNode, "./matrix" );
+ domMatrix* pMatrix = daeSafeCast<domMatrix>( jointResolver.getElement() );
+ if ( pMatrix )
+ {
+ //llinfos<<"A matrix SID was however found!"<<llendl;
+ domFloat4x4 domArray = pMatrix->getValue();
+ for ( int i = 0; i < 4; i++ )
+ {
+ for( int j = 0; j < 4; j++ )
+ {
+ workingTransform.mMatrix[i][j] = domArray[i + j*4];
+ }
+ }
+ }
+ else
+ {
+ llwarns<< "The found element is not translate or matrix node - most likely a corrupt export!" <<llendl;
+ }
}
else
{