diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 69083c4fe..2ee76a134 100644 --- a/code/FBXConverter.cpp +++ b/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(ob); + if(mat) { + ConvertMaterial(*mat); + } + } + // dummy root node out->mRootNode = new aiNode(); out->mRootNode->mNumMeshes = static_cast(meshes.size()); @@ -469,7 +484,7 @@ private: const FBX::Document& doc; }; -} // !anon +//} // !anon // ------------------------------------------------------------------------------------------------ void ConvertToAssimpScene(aiScene* out, const Document& doc) diff --git a/code/FBXDocument.cpp b/code/FBXDocument.cpp index 59dddfabf..76d01b099 100644 --- a/code/FBXDocument.cpp +++ b/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(); } } diff --git a/code/FBXDocument.h b/code/FBXDocument.h index 122ebe794..4bbde76a9 100644 --- a/code/FBXDocument.h +++ b/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;