25 #ifndef HD_DATA_SOURCE_MATERIAL_NETWORK_INTERFACE_H 26 #define HD_DATA_SOURCE_MATERIAL_NETWORK_INTERFACE_H 28 #include "pxr/usd/sdf/path.h" 29 #include "pxr/imaging/hd/containerDataSourceEditor.h" 30 #include "pxr/imaging/hd/materialNetworkInterface.h" 31 #include <unordered_map> 32 #include <unordered_set> 34 PXR_NAMESPACE_OPEN_SCOPE
49 const SdfPath &materialPrimPath,
50 const HdContainerDataSourceHandle &networkContainer)
51 : _materialPrimPath(materialPrimPath)
52 , _networkContainer(networkContainer)
53 , _containerEditor(networkContainer)
56 SdfPath GetMaterialPrimPath()
const override {
57 return _materialPrimPath;
68 const TfToken &nodeName)
const override;
73 const TfToken ¶mName)
const override;
77 const TfToken &nodeName)
const override;
82 const TfToken &inputName)
const override;
85 void DeleteNode(
const TfToken &nodeName)
override;
90 const TfToken &nodeType)
override;
93 void SetNodeParameterValue(
99 void DeleteNodeParameter(
101 const TfToken ¶mName)
override;
104 void SetNodeInputConnection(
110 void DeleteNodeInputConnection(
112 const TfToken &inputName)
override;
118 InputConnectionResult GetTerminalConnection(
119 const TfToken &terminalName)
const override;
123 const TfToken &terminalName)
override;
126 void SetTerminalConnection(
128 const InputConnection &connection)
override;
131 HdContainerDataSourceHandle Finish();
138 using _TokenSet = std::unordered_set<TfToken, TfHash>;
142 const HdDataSourceBaseHandle &ds);
145 HdContainerDataSourceHandle _networkContainer;
146 HdContainerDataSourceEditor _containerEditor;
147 _OverrideMap _existingOverrides;
148 _TokenSet _overriddenNodes;
149 _TokenSet _deletedNodes;
150 bool _terminalsOverridden =
false;
153 HdContainerDataSourceHandle _GetNode(
154 const TfToken &nodeName)
const;
155 HdContainerDataSourceHandle _GetNodeParameters(
156 const TfToken &nodeName)
const;
157 HdContainerDataSourceHandle _GetNodeConnections(
158 const TfToken &nodeName)
const;
160 mutable HdContainerDataSourceHandle _nodesContainer;
161 mutable TfToken _lastAccessedNodeName;
162 mutable HdContainerDataSourceHandle _lastAccessedNode;
163 mutable HdContainerDataSourceHandle _lastAccessedNodeParameters;
164 mutable HdContainerDataSourceHandle _lastAccessedNodeConnections;
167 PXR_NAMESPACE_CLOSE_SCOPE
169 #endif // HD_DATA_SOURCE_MATERIAL_NETWORK_INTERFACE_H Abstract interface for querying and mutating a material network.
This is a small-vector class with local storage optimization, the local storage can be specified via ...
Implements HdMaterialNetworkInterface for reading from and overriding values within data sources.
A user-extensible hashing mechanism for use with runtime hash tables.
Token for efficient comparison, assignment, and hashing of known strings.
Represents an object that can identify the location of a data source.
std::vector< TfToken > TfTokenVector
Convenience types.
A path value used to locate objects in layers or scenegraphs.
HD_API TfTokenVector GetTerminalNames() const override
Provides a container which may hold any type, and provides introspection and iteration over array typ...