Browse Source

- Bugfix: IrrXML loader ignores trailing whitespace on closing tags now
- Bugfix: Collada loader now filters bone vertex weights with weight zero - blame XSI collada export.
- Bugfix: Collada animation resolver now also considers IDs when searching for nodes by name

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@460 67173fc5-114c-0410-ac8e-9d2fd5bffc1f

ulfjorensen 16 years ago
parent
commit
98e53f976e
2 changed files with 13 additions and 5 deletions
  1. 9 5
      code/ColladaLoader.cpp
  2. 4 0
      contrib/irrXML/CXMLReaderImpl.h

+ 9 - 5
code/ColladaLoader.cpp

@@ -644,10 +644,14 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada::
 
 				float weight = ReadFloat( weightsAcc, weights, vertexIndex, 0);
 
-				aiVertexWeight w;
-				w.mVertexId = a - pStartVertex;
-				w.mWeight = weight;
-				dstBones[jointIndex].push_back( w);
+        // one day I gonna kill that XSI Collada exporter
+        if( weight > 0.0f)
+        {
+				  aiVertexWeight w;
+				  w.mVertexId = a - pStartVertex;
+				  w.mWeight = weight;
+				  dstBones[jointIndex].push_back( w);
+        }
 			}
 		}
 
@@ -1364,7 +1368,7 @@ void ColladaLoader::CollectNodes( const aiNode* pNode, std::vector<const aiNode*
 // Finds a node in the collada scene by the given name
 const Collada::Node* ColladaLoader::FindNode( const Collada::Node* pNode, const std::string& pName)
 {
-	if( pNode->mName == pName)
+	if( pNode->mName == pName || pNode->mID == pName)
 		return pNode;
 
 	for( size_t a = 0; a < pNode->mChildren.size(); ++a)

+ 4 - 0
contrib/irrXML/CXMLReaderImpl.h

@@ -425,6 +425,10 @@ private:
 		while(*P != L'>')
 			++P;
 
+    // remove trailing whitespace, if any
+    while( isspace( P[-1]))
+      --P;
+
 		NodeName = core::string<char_type>(pBeginClose, (int)(P - pBeginClose));
 		++P;
 	}