Quellcode durchsuchen

- fbx: fix bug that caused textures to be ignored in some cases.

Alexander Gessler vor 13 Jahren
Ursprung
Commit
2f5ec6f136
3 geänderte Dateien mit 22 neuen und 5 gelöschten Zeilen
  1. 17 2
      code/FBXConverter.cpp
  2. 4 2
      code/FBXDocument.cpp
  3. 1 1
      code/FBXDocument.h

+ 17 - 2
code/FBXConverter.cpp

@@ -57,7 +57,8 @@ namespace FBX {
 
 	using namespace Util;
 
-namespace {
+	// XXX vc9's debugger won't step into anonymous namespaces
+//namespace {
 
 /** Dummy class to encapsulate the conversion process */
 class Converter
@@ -84,6 +85,20 @@ public:
 			}
 		}
 
+		// hack to process all materials
+		BOOST_FOREACH(const ObjectMap::value_type& v,doc.Objects()) {
+
+			const Object* ob = v.second->Get();
+			if(!ob) {
+				continue;
+			}
+
+			const Material* mat = dynamic_cast<const Material*>(ob);
+			if(mat) {
+				ConvertMaterial(*mat);
+			}
+		}
+
 		// dummy root node
 		out->mRootNode = new aiNode();
 		out->mRootNode->mNumMeshes = static_cast<unsigned int>(meshes.size());
@@ -469,7 +484,7 @@ private:
 	const FBX::Document& doc;
 };
 
-} // !anon
+//} // !anon
 
 // ------------------------------------------------------------------------------------------------
 void ConvertToAssimpScene(aiScene* out, const Document& doc)

+ 4 - 2
code/FBXDocument.cpp

@@ -464,6 +464,10 @@ Document::Document(const Parser& parser, const ImportSettings& settings)
 , settings(settings)
 {
 	ReadPropertyTemplates();
+
+	// this order is important, connections need parsed objects to check
+	// whether connections are ok or not. Objects may not be evaluated yet,
+	// though, since this may require valid connections.
 	ReadObjects();
 	ReadConnections();
 }
@@ -506,8 +510,6 @@ void Document::ReadObjects()
 		}
 
 		objects[id] = new LazyObject(id, *el.second, *this);
-		// DEBUG - evaluate all objects
-		const Object* o = objects[id]->Get();
 	}
 }
 

+ 1 - 1
code/FBXDocument.h

@@ -392,7 +392,7 @@ public:
 public:
 
 	uint64_t insertionOrder;
-	const std::string& prop;
+	const std::string prop;
 
 	uint64_t src, dest;
 	const Document& doc;