Loading...
Searching...
No Matches
composeSite.h
Go to the documentation of this file.
1//
2// Copyright 2016 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_USD_PCP_COMPOSE_SITE_H
8#define PXR_USD_PCP_COMPOSE_SITE_H
9
35
36#include "pxr/pxr.h"
37#include "pxr/usd/pcp/api.h"
38#include "pxr/usd/pcp/errors.h"
39#include "pxr/usd/pcp/node.h"
41#include "pxr/usd/sdf/path.h"
42#include "pxr/usd/sdf/payload.h"
44#include "pxr/usd/sdf/types.h"
45#include "pxr/usd/sdf/site.h"
46
47#include <set>
48#include <string>
49#include <unordered_set>
50#include <vector>
51
52PXR_NAMESPACE_OPEN_SCOPE
53
55
57
64struct PcpArcInfo {
65 SdfLayerHandle sourceLayer;
66 SdfLayerOffset sourceLayerStackOffset;
67 std::string authoredAssetPath;
68 int arcNum;
69};
70
72typedef std::vector<PcpArcInfo> PcpArcInfoVector;
73
75PCP_API
76void
78 PcpLayerStackRefPtr const &layerStack,
79 SdfPath const &path,
80 SdfReferenceVector *result,
81 PcpArcInfoVector *info,
82 std::unordered_set<std::string> *exprVarDependencies,
83 PcpErrorVector *errors);
84
85inline void
87 PcpLayerStackRefPtr const &layerStack,
88 SdfPath const &path,
89 SdfReferenceVector *result,
90 PcpArcInfoVector *info)
91{
93 layerStack, path, result, info, nullptr , nullptr);
94}
95
96inline void
98 PcpNodeRef const &node,
99 SdfReferenceVector *result,
100 PcpArcInfoVector *info,
101 std::unordered_set<std::string> *exprVarDependencies,
102 PcpErrorVector *errors)
103{
105 node.GetLayerStack(), node.GetPath(),
106 result, info, exprVarDependencies, errors);
107}
108
109inline void
111 PcpNodeRef const &node,
112 SdfReferenceVector *result,
113 PcpArcInfoVector *info)
114{
116 node.GetLayerStack(), node.GetPath(), result, info, nullptr, nullptr);
117}
118
120PCP_API
121void
123 PcpLayerStackRefPtr const &layerStack,
124 SdfPath const &path,
125 SdfPayloadVector *result,
126 PcpArcInfoVector *info,
127 std::unordered_set<std::string> *exprVarDependencies,
128 PcpErrorVector *errors);
129
130inline void
132 PcpLayerStackRefPtr const &layerStack,
133 SdfPath const &path,
134 SdfPayloadVector *result,
135 PcpArcInfoVector *info)
136{
138 layerStack, path, result, info, nullptr, nullptr);
139}
140
141inline void
143 PcpNodeRef const &node,
144 SdfPayloadVector *result,
145 PcpArcInfoVector *info,
146 std::unordered_set<std::string> *exprVarDependencies,
147 PcpErrorVector *errors)
148{
150 node.GetLayerStack(), node.GetPath(),
151 result, info, exprVarDependencies, errors);
152}
153
154inline void
156 PcpNodeRef const &node,
157 SdfPayloadVector *result,
158 PcpArcInfoVector *info)
159{
161 node.GetLayerStack(), node.GetPath(), result, info, nullptr, nullptr);
162}
163
165PCP_API
167PcpComposeSitePermission(PcpLayerStackRefPtr const &layerStack,
168 SdfPath const &path);
169
170inline SdfPermission
172{
173 return PcpComposeSitePermission(node.GetLayerStack(), node.GetPath());
174}
175
177PCP_API
178void
179PcpComposeSitePrimSites(PcpLayerStackRefPtr const &layerStack,
180 SdfPath const &path,
181 SdfSiteVector *result);
182
183inline void
184PcpComposeSitePrimSites(PcpNodeRef const &node, SdfSiteVector *result)
185{
187 node.GetLayerStack(), node.GetPath(), result);
188}
189
191PCP_API
192void
193PcpComposeSiteRelocates(PcpLayerStackRefPtr const &layerStack,
194 SdfPath const &path,
195 SdfRelocatesMap *result);
196
197inline void
199{
201 node.GetLayerStack(), node.GetPath(), result);
202}
203
205PCP_API
206bool
207PcpComposeSiteHasPrimSpecs(PcpLayerStackRefPtr const &layerStack,
208 SdfPath const &path);
209inline bool
211{
212 return PcpComposeSiteHasPrimSpecs(node.GetLayerStack(), node.GetPath());
213}
214
216PCP_API
217bool
218PcpComposeSiteHasSymmetry(PcpLayerStackRefPtr const &layerStack,
219 SdfPath const &path);
220inline bool
222{
223 return PcpComposeSiteHasSymmetry(node.GetLayerStack(), node.GetPath());
224}
225
227PCP_API
228void
229PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
230 SdfPath const &path, SdfPathVector *result,
231 PcpArcInfoVector *info);
232
233PCP_API
234void
235PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
236 SdfPath const &path, SdfPathVector *result);
237
238inline void
239PcpComposeSiteInherits(PcpNodeRef const &node, SdfPathVector *result)
240{
241 return PcpComposeSiteInherits(node.GetLayerStack(), node.GetPath(), result);
242}
243
245PCP_API
246void
247PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
248 SdfPath const &path, SdfPathVector *result,
249 PcpArcInfoVector *info);
250
251PCP_API
252void
253PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
254 SdfPath const &path, SdfPathVector *result);
255
256inline void
257PcpComposeSiteSpecializes(PcpNodeRef const &node, SdfPathVector *result)
258{
260 node.GetLayerStack(), node.GetPath(), result);
261}
262
264PCP_API
265void
266PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
267 SdfPath const &path,
268 std::vector<std::string> *result,
269 PcpArcInfoVector *info);
270
271PCP_API
272void
273PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
274 SdfPath const &path,
275 std::vector<std::string> *result);
276inline void
278 std::vector<std::string> *result) {
280 node.GetLayerStack(), node.GetPath(), result);
281}
282
284PCP_API
285void
286PcpComposeSiteVariantSetOptions(PcpLayerStackRefPtr const &layerStack,
287 SdfPath const &path,
288 std::string const &vsetName,
289 std::set<std::string> *result);
290inline void
292 std::string const &vsetName,
293 std::set<std::string> *result)
294{
296 node.GetLayerStack(), node.GetPath(), vsetName, result);
297}
298
300PCP_API
301bool
303 PcpLayerStackRefPtr const &layerStack,
304 SdfPath const &path,
305 std::string const &vsetName,
306 std::string *result,
307 std::unordered_set<std::string> *exprVarDependencies,
308 PcpErrorVector *errors);
309
310inline bool
312 PcpLayerStackRefPtr const &layerStack,
313 SdfPath const &path,
314 std::string const &vsetName,
315 std::string *result)
316{
318 layerStack, path, vsetName, result, nullptr, nullptr);
319}
320
321inline bool
323 std::string const &vsetName,
324 std::string *result)
325{
327 node.GetLayerStack(), node.GetPath(), vsetName, result);
328}
329
331PCP_API
332void
334 PcpLayerStackRefPtr const &layerStack,
335 SdfPath const &path,
337 std::unordered_set<std::string> *exprVarDependencies,
338 PcpErrorVector *errors);
339
340inline void
342 PcpLayerStackRefPtr const &layerStack,
343 SdfPath const &path,
345{
347 layerStack, path, result, nullptr, nullptr);
348}
349
350inline void
353{
355 node.GetLayerStack(), node.GetPath(), result);
356}
357
358PCP_API
359bool
360PcpComposeSiteHasVariantSelections(
361 PcpLayerStackRefPtr const &layerStack,
362 SdfPath const &path);
363
366PCP_API
367void
368PcpComposeSiteChildNames(SdfLayerRefPtrVector const &layers,
369 SdfPath const &path,
370 const TfToken & namesField,
371 TfTokenVector *nameOrder,
372 PcpTokenSet *nameSet,
373 const TfToken *orderField = nullptr);
374
375PXR_NAMESPACE_CLOSE_SCOPE
376
377#endif // PXR_USD_PCP_COMPOSE_SITE_H
Represents a stack of layers that contribute opinions to composition.
Definition: layerStack.h:50
A site specifies a path in a layer stack of scene description.
Definition: site.h:79
PcpNode represents a node in an expression tree for compositing scene description.
Definition: node.h:47
PCP_API const SdfPath & GetPath() const
Returns the path for the site this node represents.
PCP_API const PcpLayerStackRefPtr & GetLayerStack() const
Returns the layer stack for the site this node represents.
Represents a time offset and scale between layers.
Definition: layerOffset.h:44
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:274
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
Implementation of a hash set using open-addressing and the robin hood hashing algorithm with backward...
Definition: robin_set.h:95
PCP_API void PcpComposeSitePrimSites(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, SdfSiteVector *result)
Prim sites.
PCP_API bool PcpComposeSiteHasPrimSpecs(PcpLayerStackRefPtr const &layerStack, SdfPath const &path)
Has prim specs.
PCP_API void PcpComposeSiteVariantSetOptions(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, std::string const &vsetName, std::set< std::string > *result)
VariantSetOptions.
std::vector< PcpArcInfo > PcpArcInfoVector
A vector of reference or payload arc information.
Definition: composeSite.h:72
PCP_API void PcpComposeSiteVariantSelections(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, SdfVariantSelectionMap *result, std::unordered_set< std::string > *exprVarDependencies, PcpErrorVector *errors)
VariantSelections.
PCP_API void PcpComposeSiteReferences(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, SdfReferenceVector *result, PcpArcInfoVector *info, std::unordered_set< std::string > *exprVarDependencies, PcpErrorVector *errors)
References.
PCP_API void PcpComposeSiteChildNames(SdfLayerRefPtrVector const &layers, SdfPath const &path, const TfToken &namesField, TfTokenVector *nameOrder, PcpTokenSet *nameSet, const TfToken *orderField=nullptr)
Compose child names.
PCP_API bool PcpComposeSiteVariantSelection(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, std::string const &vsetName, std::string *result, std::unordered_set< std::string > *exprVarDependencies, PcpErrorVector *errors)
VariantSelection.
PCP_API void PcpComposeSitePayloads(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, SdfPayloadVector *result, PcpArcInfoVector *info, std::unordered_set< std::string > *exprVarDependencies, PcpErrorVector *errors)
Payloads.
PCP_API void PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, std::vector< std::string > *result, PcpArcInfoVector *info)
VariantSets.
PCP_API SdfPermission PcpComposeSitePermission(PcpLayerStackRefPtr const &layerStack, SdfPath const &path)
Permission.
PCP_API void PcpComposeSiteRelocates(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, SdfRelocatesMap *result)
Relocates.
PCP_API void PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, SdfPathVector *result, PcpArcInfoVector *info)
Inherits.
PCP_API void PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, SdfPathVector *result, PcpArcInfoVector *info)
Specializes.
PCP_API bool PcpComposeSiteHasSymmetry(PcpLayerStackRefPtr const &layerStack, SdfPath const &path)
Symmetry.
Helper information about an arc.
Definition: composeSite.h:64
#define TF_DECLARE_WEAK_AND_REF_PTRS(type)
Define standard weak, ref, and vector pointer types.
Definition: declarePtrs.h:72
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
Basic Sdf data types.
std::map< std::string, std::string > SdfVariantSelectionMap
A map of reference variant set names to variants in those sets.
Definition: types.h:258
SdfPermission
An enum that defines permission levels.
Definition: types.h:132
std::map< SdfPath, SdfPath > SdfRelocatesMap
A map of source SdfPaths to target SdfPaths for relocation.
Definition: types.h:267