- fbx: refactor code for fetching property templates.
parent
ec50632f2e
commit
97b69364ad
|
@ -327,6 +327,35 @@ void ReadVectorDataArray(std::vector<unsigned int>& out, const Element& el)
|
||||||
out.push_back(static_cast<unsigned int>(ival));
|
out.push_back(static_cast<unsigned int>(ival));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
// fetch a property table and the corresponding property template
|
||||||
|
boost::shared_ptr<const PropertyTable> GetPropertyTable(const Document& doc,
|
||||||
|
const std::string& templateName,
|
||||||
|
const Element &element,
|
||||||
|
const Scope& sc)
|
||||||
|
{
|
||||||
|
const Element* const Properties70 = sc["Properties70"];
|
||||||
|
boost::shared_ptr<const PropertyTable> templateProps = boost::shared_ptr<const PropertyTable>(NULL);
|
||||||
|
if(templateName.length()) {
|
||||||
|
PropertyTemplateMap::const_iterator it = doc.Templates().find(templateName);
|
||||||
|
if(it != doc.Templates().end()) {
|
||||||
|
templateProps = (*it).second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!Properties70) {
|
||||||
|
DOMWarning("material property table (Properties70) not found",&element);
|
||||||
|
if(templateProps) {
|
||||||
|
return templateProps;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return boost::make_shared<const PropertyTable>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return boost::make_shared<const PropertyTable>(*Properties70,templateProps);
|
||||||
|
}
|
||||||
} // !Util
|
} // !Util
|
||||||
|
|
||||||
using namespace Util;
|
using namespace Util;
|
||||||
|
|
|
@ -91,6 +91,14 @@ void ReadVectorDataArray(std::vector<int>& out, const Element& el);
|
||||||
// read an array of uints
|
// read an array of uints
|
||||||
void ReadVectorDataArray(std::vector<unsigned int>& out, const Element& el);
|
void ReadVectorDataArray(std::vector<unsigned int>& out, const Element& el);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// fetch a property table and the corresponding property template
|
||||||
|
boost::shared_ptr<const PropertyTable> GetPropertyTable(const Document& doc,
|
||||||
|
const std::string& templateName,
|
||||||
|
const Element &element,
|
||||||
|
const Scope& sc);
|
||||||
|
|
||||||
} //!Util
|
} //!Util
|
||||||
} //!FBX
|
} //!FBX
|
||||||
} //!Assimp
|
} //!Assimp
|
||||||
|
|
|
@ -65,7 +65,6 @@ Material::Material(const Element& element, const Document& doc, const std::strin
|
||||||
|
|
||||||
const Element* const ShadingModel = sc["ShadingModel"];
|
const Element* const ShadingModel = sc["ShadingModel"];
|
||||||
const Element* const MultiLayer = sc["MultiLayer"];
|
const Element* const MultiLayer = sc["MultiLayer"];
|
||||||
const Element* const Properties70 = sc["Properties70"];
|
|
||||||
|
|
||||||
if(MultiLayer) {
|
if(MultiLayer) {
|
||||||
multilayer = !!ParseTokenAsInt(GetRequiredToken(*MultiLayer,0));
|
multilayer = !!ParseTokenAsInt(GetRequiredToken(*MultiLayer,0));
|
||||||
|
@ -92,26 +91,7 @@ Material::Material(const Element& element, const Document& doc, const std::strin
|
||||||
DOMWarning("shading mode not recognized: " + shading,&element);
|
DOMWarning("shading mode not recognized: " + shading,&element);
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr<const PropertyTable> templateProps = boost::shared_ptr<const PropertyTable>(NULL);
|
props = GetPropertyTable(doc,templateName,element,sc);
|
||||||
if(templateName.length()) {
|
|
||||||
PropertyTemplateMap::const_iterator it = doc.Templates().find(templateName);
|
|
||||||
if(it != doc.Templates().end()) {
|
|
||||||
templateProps = (*it).second;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!Properties70) {
|
|
||||||
DOMWarning("material property table (Properties70) not found",&element);
|
|
||||||
if(templateProps) {
|
|
||||||
props = templateProps;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
props = boost::make_shared<const PropertyTable>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
props = boost::make_shared<const PropertyTable>(*Properties70,templateProps);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue