30 #include <dom/domMaterial.h>
31 #include <dom/domGeometry.h>
32 #include <dom/domNode.h>
33 #include <dom/domCOLLADA.h>
38 #define Check(val) if (!(val)) throw exception();
81 template<
typename MyType,
typename DomType>
83 if (!domObject.getUserData())
84 domObject.setUserData(
new MyType(domObject));
85 return *(MyType*)(domObject.getUserData());
90 template<
typename MyType,
typename DomType>
92 vector<daeElement*> elts = dae.getDatabase()->typeLookup(DomType::ID());
93 for (
size_t i = 0; i < elts.size(); i++)
94 delete (MyType*)elts[i]->getUserData();
100 for (
size_t i = 0; i < node.getNode_array().getCount(); i++)
101 childNodes.push_back(&lookup<Node, domNode>(*node.getNode_array()[i]));
104 for (
size_t i = 0; i < node.getInstance_node_array().getCount(); i++) {
105 domNode* child = daeSafeCast<domNode>(
106 node.getInstance_node_array()[i]->getUrl().getElement());
108 childNodes.push_back(&lookup<Node, domNode>(*child));
112 for (
size_t i = 0; i < node.getInstance_geometry_array().getCount(); i++) {
113 domInstance_geometry* instanceGeom = node.getInstance_geometry_array()[i];
114 domGeometry* geom = daeSafeCast<domGeometry>(instanceGeom->getUrl().getElement());
120 domInstance_material* instanceMtl = daeSafeCast<domInstance_material>(
121 instanceGeom->getDescendant(
"instance_material"));
123 domMaterial* mtl = daeSafeCast<domMaterial>(instanceMtl->getTarget().getElement());
125 Material& convertedMtl = lookup<Material, domMaterial>(*mtl);
129 meshes.push_back(&lookup<Mesh, domGeometry>(*geom));
130 meshes.back()->mtl = &convertedMtl;
140 domVisual_scene* visualScene = daeSafeCast<domVisual_scene>(root.getDescendant(
"visual_scene"));
145 domNode_Array& nodes = visualScene->getNode_array();
146 for (
size_t i = 0; i < nodes.getCount(); i++)
147 lookup<Node, domNode>(*nodes[i]);
155 domCOLLADA* root = dae.open(file);
163 catch (
const exception&) {
164 return testResult(
false);
168 freeConversionObjects<Node, domNode>(dae);
169 freeConversionObjects<Mesh, domGeometry>(dae);
170 freeConversionObjects<Material, domMaterial>(dae);
172 return testResult(
true);
vector< float > diffuseColor
list< Node * > childNodes
void convertModel(domCOLLADA &root)
Material(domMaterial &mtl)
This is a blank file. has nothing in it. I may have migrated it to the cpp.
MyType & lookup(DomType &domObject)
void freeConversionObjects(DAE &dae)
string lookupTestFile(const string &fileName)