Added correct management of binding material in controller nodes
This commit is contained in:
parent
75ee76b233
commit
ce62053b9c
|
@ -248,7 +248,7 @@ namespace io {
|
||||||
return E_NOERROR;
|
return E_NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int LoadControllerMesh(OpenMeshType& m, InfoDAE* info, const QDomElement& geo, CallBackPos *cb=0)
|
static int LoadControllerMesh(OpenMeshType& m, InfoDAE* info, const QDomElement& geo,QMap<QString, QString> materialBindingMap, CallBackPos *cb=0)
|
||||||
{
|
{
|
||||||
assert(geo.tagName() == "controller");
|
assert(geo.tagName() == "controller");
|
||||||
QDomNodeList skinList = geo.toElement().elementsByTagName("skin");
|
QDomNodeList skinList = geo.toElement().elementsByTagName("skin");
|
||||||
|
@ -261,7 +261,6 @@ namespace io {
|
||||||
QDomNode refNode = findNodeBySpecificAttributeValue(*(info->doc),"geometry","id",geomNode_url);
|
QDomNode refNode = findNodeBySpecificAttributeValue(*(info->doc),"geometry","id",geomNode_url);
|
||||||
|
|
||||||
QDomNodeList bindingNodes = skinNode.toElement().elementsByTagName("bind_material");
|
QDomNodeList bindingNodes = skinNode.toElement().elementsByTagName("bind_material");
|
||||||
QMap<QString,QString> materialBindingMap;
|
|
||||||
if( bindingNodes.size()>0) {
|
if( bindingNodes.size()>0) {
|
||||||
QDEBUG("** skin node of a controller has a material binding");
|
QDEBUG("** skin node of a controller has a material binding");
|
||||||
GenerateMaterialBinding(skinNode,materialBindingMap);
|
GenerateMaterialBinding(skinNode,materialBindingMap);
|
||||||
|
@ -450,8 +449,16 @@ namespace io {
|
||||||
QDEBUG("Found a instance_controller with url '%s'", qPrintable(controllerNode_url));
|
QDEBUG("Found a instance_controller with url '%s'", qPrintable(controllerNode_url));
|
||||||
QDomNode refNode = findNodeBySpecificAttributeValue(*(info->doc),"controller","id",controllerNode_url);
|
QDomNode refNode = findNodeBySpecificAttributeValue(*(info->doc),"controller","id",controllerNode_url);
|
||||||
|
|
||||||
|
QDomNodeList bindingNodes = instContrNode.toElement().elementsByTagName("bind_material");
|
||||||
|
QMap<QString, QString> materialBindingMap;
|
||||||
|
if( bindingNodes.size()>0) {
|
||||||
|
QDEBUG("** instance_controller node of has a material binding");
|
||||||
|
GenerateMaterialBinding(instContrNode,materialBindingMap);
|
||||||
|
}
|
||||||
|
|
||||||
OpenMeshType newMesh;
|
OpenMeshType newMesh;
|
||||||
LoadControllerMesh(newMesh, info, refNode.toElement());
|
newMesh.face.EnableWedgeTex();
|
||||||
|
LoadControllerMesh(newMesh, info, refNode.toElement(),materialBindingMap);
|
||||||
tri::UpdatePosition<OpenMeshType>::Matrix(newMesh,curTr);
|
tri::UpdatePosition<OpenMeshType>::Matrix(newMesh,curTr);
|
||||||
tri::Append<OpenMeshType,OpenMeshType>::Mesh(m,newMesh);
|
tri::Append<OpenMeshType,OpenMeshType>::Mesh(m,newMesh);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue