37#ifndef Alembic_AbcMaterial_MaterialFlatten_h
38#define Alembic_AbcMaterial_MaterialFlatten_h
44namespace AbcMaterial {
93 std::vector<std::string> & oShaderTypeNames );
99 const std::string & iShaderType,
100 std::string & oResult );
120 return name == iRhs.
name &&
138 const std::string & iShaderType,
146 const std::string & iTargetName,
147 std::vector<std::string> & oShaderTypeNames );
150 const std::string & iShaderType,
151 std::string & oNodeName,
152 std::string & oOutputName );
174 const std::string & iConnectedNodeName,
175 const std::string & iConnectedOutputName )
176 : inputName( iInputName )
177 , connectedNodeName( iConnectedNodeName )
178 , connectedOutputName( iConnectedOutputName )
207 std::vector<IMaterialSchema::NetworkNode> m_nodes;
208 std::vector<Abc::ICompoundProperty> m_networkParameters;
222 void flattenNetwork();
224 bool m_networkFlattened;
226 std::vector<std::string> m_nodeNames;
227 typedef std::map<std::string, StringMapPtr> StringMapMap;
228 StringMapMap m_nodesToInterfaceMappings;
#define ALEMBIC_VERSION_NS
bool getNodeType(std::string &oResult)
void getConnections(ConnectionVector &oResult)
bool getTarget(std::string &oResult)
void getParameters(ParameterEntryVector &oResult)
std::vector< Connection > ConnectionVector
bool getNetworkTerminal(const std::string &iTarget, const std::string &iShaderType, std::string &oNodeName, std::string &oOutputName)
bool empty()
Returns true is there are no schema in the inheritance path.
Alembic::Util::shared_ptr< StringMap > StringMapPtr
void append(IMaterial iMaterialObject)
Append the schemas of matching parent material objects.
void getNetworkTerminalShaderTypesForTarget(const std::string &iTargetName, std::vector< std::string > &oShaderTypeNames)
bool getShader(const std::string &iTarget, const std::string &iShaderType, std::string &oResult)
MaterialFlatten()
Create empty. Use append to add material schema manually.
NetworkNode getNetworkNode(const std::string &iNodeName)
void append(IMaterialSchema iMaterialSchema)
Manually append a schema to the inheritance hierarchy.
void getShaderParameters(const std::string &iTarget, const std::string &iShaderType, ParameterEntryVector &oResult)
MaterialFlatten(IMaterial iMaterialObject)
std::map< std::string, std::string > StringMap
void getShaderTypesForTarget(const std::string &iTargetName, std::vector< std::string > &oShaderTypeNames)
MaterialFlatten(IMaterialSchema iMaterialSchema)
Create with a single materialSchema.
void getTargetNames(std::vector< std::string > &oTargetNames)
MaterialFlatten(Abc::IObject iObject, Abc::IArchive iAlternateSearchArchive=Abc::IArchive())
NetworkNode getNetworkNode(size_t iIndex)
void getNetworkTerminalTargetNames(std::vector< std::string > &iTargetNames)
network stuff
std::vector< ParameterEntry > ParameterEntryVector
size_t getNumNetworkNodes()
std::vector< IMaterialSchema > SchemaVector
std::string connectedOutputName
Connection(const std::string &iInputName, const std::string &iConnectedNodeName, const std::string &iConnectedOutputName)
bool operator==(const Connection &iRhs) const
std::string connectedNodeName
const AbcCoreAbstract::PropertyHeader * header
ParameterEntry(const std::string &iName, Abc::ICompoundProperty iParent, const AbcCoreAbstract::PropertyHeader *iHeader)
Abc::ICompoundProperty parent
bool operator==(const ParameterEntry &iRhs) const