diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 0b97bb39f..c833d3f02 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -64,7 +64,29 @@ public: : out(out) , doc(doc) { - ConvertRootNode(); + //ConvertRootNode(); + + // hack to process all meshes + BOOST_FOREACH(const ObjectMap::value_type& v,doc.Objects()) { + + const Object* ob = v.second->Get(); + if(!ob) { + continue; + } + const MeshGeometry* geo = dynamic_cast(ob); + if(geo) { + ConvertMesh(*geo); + } + } + + // dummy root node + out->mRootNode = new aiNode(); + out->mRootNode->mNumMeshes = static_cast(meshes.size()); + out->mRootNode->mMeshes = new unsigned int[meshes.size()]; + for(unsigned int i = 0; i < out->mRootNode->mNumMeshes; ++i) { + out->mRootNode->mMeshes[i] = i; + } + TransferDataToScene(); } diff --git a/code/FBXDocument.cpp b/code/FBXDocument.cpp index 549c8e34c..b94460e6f 100644 --- a/code/FBXDocument.cpp +++ b/code/FBXDocument.cpp @@ -352,7 +352,7 @@ const Object* LazyObject::Get() if (!strncmp(obtype,"Geometry",static_cast(key.end()-key.begin()))) { if (!strcmp(classtag.c_str(),"Mesh")) { - object = new MeshGeometry(element,name,settings); + object.reset(new MeshGeometry(element,name,settings)); } } diff --git a/code/FBXDocument.h b/code/FBXDocument.h index 4496330b5..759da6ec8 100644 --- a/code/FBXDocument.h +++ b/code/FBXDocument.h @@ -91,7 +91,7 @@ class Object public: Object(const Element& element, const std::string& name); - ~Object(); + virtual ~Object(); public: