- fbx: attach node attachments to their nodes.

pull/14/head
Alexander Gessler 2012-07-26 03:45:37 +02:00
parent b66dfc85e1
commit cab713b4c5
2 changed files with 15 additions and 3 deletions

View File

@ -149,8 +149,8 @@ protected:
/** DOM class for generic FBX NoteAttribute blocks. NoteAttributes just hold a property table, /** DOM class for generic FBX NoteAttribute blocks. NoteAttribute's just hold a property table,
* actualy members are added by deriving classes. */ * fixed members are added by deriving classes. */
class NodeAttribute : public Object class NodeAttribute : public Object
{ {
public: public:
@ -236,6 +236,12 @@ public:
return geometry; return geometry;
} }
/** Get node attachments */
const std::vector<const NodeAttribute*>& GetAttributes() const {
return attributes;
}
private: private:
void ResolveLinks(const Element& element, const Document& doc); void ResolveLinks(const Element& element, const Document& doc);
@ -244,6 +250,7 @@ private:
std::vector<const Material*> materials; std::vector<const Material*> materials;
std::vector<const Geometry*> geometry; std::vector<const Geometry*> geometry;
std::vector<const NodeAttribute*> attributes;
std::string shading; std::string shading;
std::string culling; std::string culling;

View File

@ -89,7 +89,7 @@ Model::~Model()
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void Model::ResolveLinks(const Element& element, const Document& doc) void Model::ResolveLinks(const Element& element, const Document& doc)
{ {
const char* const arr[] = {"Geometry","Material"}; const char* const arr[] = {"Geometry","Material","NodeAttribute"};
// resolve material // resolve material
const std::vector<const Connection*>& conns = doc.GetConnectionsByDestinationSequenced(ID(),arr, 2); const std::vector<const Connection*>& conns = doc.GetConnectionsByDestinationSequenced(ID(),arr, 2);
@ -121,6 +121,11 @@ void Model::ResolveLinks(const Element& element, const Document& doc)
continue; continue;
} }
const NodeAttribute* const att = dynamic_cast<const NodeAttribute*>(ob);
if(att) {
attributes.push_back(att);
continue;
}
DOMWarning("source object for model link is neither Material or Geometry, ignoring",&element); DOMWarning("source object for model link is neither Material or Geometry, ignoring",&element);
continue; continue;