80 void append( IMaterial iMaterialObject );
93 std::vector<std::string> & oShaderTypeNames );
98 bool getShader(
const std::string & iTarget,
99 const std::string & iShaderType,
100 std::string & oResult );
102 struct ParameterEntry
109 ParameterEntry(
const std::string & iName,
118 bool operator==(
const ParameterEntry &iRhs )
const
120 return name == iRhs.name &&
121 parent == iRhs.parent &&
122 header == iRhs.header;
131 typedef std::vector<ParameterEntry> ParameterEntryVector;
138 const std::string & iShaderType,
139 ParameterEntryVector & oResult );
145 void getNetworkTerminalShaderTypesForTarget(
146 const std::string & iTargetName,
147 std::vector<std::string> & oShaderTypeNames );
149 bool getNetworkTerminal(
const std::string & iTarget,
150 const std::string & iShaderType,
151 std::string & oNodeName,
152 std::string & oOutputName );
154 typedef std::map<std::string, std::string> StringMap;
155 typedef Alembic::Util::shared_ptr<StringMap> StringMapPtr;
156 typedef std::vector<IMaterialSchema> SchemaVector;
158 class ALEMBIC_EXPORT NetworkNode
166 std::string getName();
167 bool getTarget( std::string & oResult );
168 bool getNodeType( std::string & oResult );
169 void getParameters( ParameterEntryVector & oResult );
173 Connection(
const std::string & iInputName,
174 const std::string & iConnectedNodeName,
175 const std::string & iConnectedOutputName )
176 : inputName( iInputName )
177 , connectedNodeName( iConnectedNodeName )
178 , connectedOutputName( iConnectedOutputName )
182 bool operator==(
const Connection & iRhs )
const
184 return inputName == iRhs.inputName &&
185 connectedNodeName == iRhs.connectedNodeName &&
186 connectedOutputName == iRhs.connectedOutputName;
189 std::string inputName;
190 std::string connectedNodeName;
191 std::string connectedOutputName;
194 typedef std::vector<Connection> ConnectionVector;
196 void getConnections( ConnectionVector & oResult );
200 friend class MaterialFlatten;
202 NetworkNode(
const std::string & iName,
203 SchemaVector & iSchemas,
204 StringMapPtr iInterfaceMappings );
207 std::vector<IMaterialSchema::NetworkNode> m_nodes;
208 std::vector<Abc::ICompoundProperty> m_networkParameters;
209 StringMapPtr m_interfaceMappings;
212 size_t getNumNetworkNodes();
214 NetworkNode getNetworkNode(
const std::string & iNodeName );
220 SchemaVector m_schemas;
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;