24#ifndef HD_DATA_SOURCE_MATERIAL_NETWORK_INTERFACE_H
25#define HD_DATA_SOURCE_MATERIAL_NETWORK_INTERFACE_H
27#include "pxr/usd/sdf/path.h"
28#include "pxr/imaging/hd/containerDataSourceEditor.h"
29#include "pxr/imaging/hd/materialNetworkInterface.h"
30#include <unordered_map>
31#include <unordered_set>
33PXR_NAMESPACE_OPEN_SCOPE
48 const SdfPath &materialPrimPath,
49 const HdContainerDataSourceHandle &networkContainer,
50 const HdContainerDataSourceHandle &primContainer)
51 : _materialPrimPath(materialPrimPath)
52 , _networkContainer(networkContainer)
53 , _networkEditor(networkContainer)
54 , _primContainer(primContainer)
58 SdfPath GetMaterialPrimPath()
const override {
59 return _materialPrimPath;
79 const TfToken &nodeName)
const override;
84 const TfToken ¶mName)
const override;
88 const TfToken &nodeName)
const override;
93 const TfToken &inputName)
const override;
96 void DeleteNode(
const TfToken &nodeName)
override;
101 const TfToken &nodeType)
override;
104 void SetNodeParameterValue(
107 const VtValue &value)
override;
110 void DeleteNodeParameter(
112 const TfToken ¶mName)
override;
115 void SetNodeInputConnection(
121 void DeleteNodeInputConnection(
123 const TfToken &inputName)
override;
129 InputConnectionResult GetTerminalConnection(
130 const TfToken &terminalName)
const override;
134 const TfToken &terminalName)
override;
137 void SetTerminalConnection(
139 const InputConnection &connection)
override;
142 HdContainerDataSourceHandle Finish();
145 HdContainerDataSourceHandle _GetNodeTypeInfo(
146 const TfToken& nodeName)
const;
152 using _TokenSet = std::unordered_set<TfToken, TfHash>;
156 const HdDataSourceBaseHandle &ds);
159 HdContainerDataSourceHandle _networkContainer;
160 HdContainerDataSourceEditor _networkEditor;
161 HdContainerDataSourceHandle _primContainer;
162 _OverrideMap _existingOverrides;
163 _TokenSet _overriddenNodes;
164 _TokenSet _deletedNodes;
165 bool _terminalsOverridden =
false;
168 HdContainerDataSourceHandle _GetNode(
169 const TfToken &nodeName)
const;
170 HdContainerDataSourceHandle _GetNodeParameters(
171 const TfToken &nodeName)
const;
172 HdContainerDataSourceHandle _GetNodeConnections(
173 const TfToken &nodeName)
const;
175 mutable HdContainerDataSourceHandle _nodesContainer;
176 mutable TfToken _lastAccessedNodeName;
177 mutable HdContainerDataSourceHandle _lastAccessedNode;
178 mutable HdContainerDataSourceHandle _lastAccessedNodeParameters;
179 mutable HdContainerDataSourceHandle _lastAccessedNodeConnections;
182PXR_NAMESPACE_CLOSE_SCOPE
Represents an object that can identify the location of a data source.
Implements HdMaterialNetworkInterface for reading from and overriding values within data sources.
HD_API TfTokenVector GetTerminalNames() const override
HD_API std::string GetModelAssetName() const override
Returns the nearest enclosing model asset name, as described by the model schema, or empty string if ...
HD_API TfTokenVector GetNodeTypeInfoKeys(const TfToken &nodeName) const override
Node type info is a collection of data related to the node type, often used to determine the node typ...
Abstract interface for querying and mutating a material network.
A path value used to locate objects in layers or scenegraphs.
A user-extensible hashing mechanism for use with runtime hash tables.
This is a small-vector class with local storage optimization, the local storage can be specified via ...
Token for efficient comparison, assignment, and hashing of known strings.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
std::vector< TfToken > TfTokenVector
Convenience types.