MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/MaterialX / getShaderNodeDef

Function getShaderNodeDef

source/MaterialXCore/Version.cpp:14–43  ·  view source on GitHub ↗

Return the NodeDef associated with a legacy ShaderRef element.

Source from the content-addressed store, hash-verified

12
13// Return the NodeDef associated with a legacy ShaderRef element.
14NodeDefPtr getShaderNodeDef(ElementPtr shaderRef)
15{
16 if (shaderRef->hasAttribute(NodeDef::NODE_DEF_ATTRIBUTE))
17 {
18 string nodeDefString = shaderRef->getAttribute(NodeDef::NODE_DEF_ATTRIBUTE);
19 ConstDocumentPtr doc = shaderRef->getDocument();
20 NodeDefPtr child = doc->getNodeDef(shaderRef->getQualifiedName(nodeDefString));
21 return child ? child : doc->getNodeDef(nodeDefString);
22 }
23 if (shaderRef->hasAttribute(NodeDef::NODE_ATTRIBUTE))
24 {
25 string nodeString = shaderRef->getAttribute(NodeDef::NODE_ATTRIBUTE);
26 string type = shaderRef->getAttribute(TypedElement::TYPE_ATTRIBUTE);
27 string target = shaderRef->getAttribute(InterfaceElement::TARGET_ATTRIBUTE);
28 string version = shaderRef->getAttribute(InterfaceElement::VERSION_ATTRIBUTE);
29 vector<NodeDefPtr> nodeDefs = shaderRef->getDocument()->getMatchingNodeDefs(shaderRef->getQualifiedName(nodeString));
30 vector<NodeDefPtr> secondary = shaderRef->getDocument()->getMatchingNodeDefs(nodeString);
31 nodeDefs.insert(nodeDefs.end(), secondary.begin(), secondary.end());
32 for (NodeDefPtr nodeDef : nodeDefs)
33 {
34 if (targetStringsMatch(nodeDef->getTarget(), target) &&
35 nodeDef->isVersionCompatible(version) &&
36 (type.empty() || nodeDef->getType() == type))
37 {
38 return nodeDef;
39 }
40 }
41 }
42 return NodeDefPtr();
43}
44
45// Copy an input between nodes, maintaining all existing bindings.
46void copyInputWithBindings(NodePtr sourceNode, const string& sourceInputName,

Callers 1

upgradeVersionMethod · 0.85

Calls 10

targetStringsMatchFunction · 0.85
insertMethod · 0.80
isVersionCompatibleMethod · 0.80
getDocumentMethod · 0.45
getNodeDefMethod · 0.45
getMatchingNodeDefsMethod · 0.45
endMethod · 0.45
beginMethod · 0.45
emptyMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected