This document is for a version of USD that is under development. See this page for the current release.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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,
209 const std::unordered_set<SdfLayerHandle, TfHash>&
210 layersToIgnore);
211
212PCP_API
213bool
214PcpComposeSiteHasPrimSpecs(PcpLayerStackRefPtr const &layerStack,
215 SdfPath const &path);
216
217inline bool
219{
220 return PcpComposeSiteHasPrimSpecs(node.GetLayerStack(), node.GetPath());
221}
222
224PCP_API
225bool
226PcpComposeSiteHasSymmetry(PcpLayerStackRefPtr const &layerStack,
227 SdfPath const &path);
228inline bool
230{
231 return PcpComposeSiteHasSymmetry(node.GetLayerStack(), node.GetPath());
232}
233
235PCP_API
236void
237PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
238 SdfPath const &path, SdfPathVector *result,
239 PcpArcInfoVector *info);
240
241PCP_API
242void
243PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
244 SdfPath const &path, SdfPathVector *result);
245
246inline void
247PcpComposeSiteInherits(PcpNodeRef const &node, SdfPathVector *result)
248{
249 return PcpComposeSiteInherits(node.GetLayerStack(), node.GetPath(), result);
250}
251
253PCP_API
254void
255PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
256 SdfPath const &path, SdfPathVector *result,
257 PcpArcInfoVector *info);
258
259PCP_API
260void
261PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
262 SdfPath const &path, SdfPathVector *result);
263
264inline void
265PcpComposeSiteSpecializes(PcpNodeRef const &node, SdfPathVector *result)
266{
268 node.GetLayerStack(), node.GetPath(), result);
269}
270
272PCP_API
273void
274PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
275 SdfPath const &path,
276 std::vector<std::string> *result,
277 PcpArcInfoVector *info);
278
279PCP_API
280void
281PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
282 SdfPath const &path,
283 std::vector<std::string> *result);
284inline void
286 std::vector<std::string> *result) {
288 node.GetLayerStack(), node.GetPath(), result);
289}
290
292PCP_API
293void
294PcpComposeSiteVariantSetOptions(PcpLayerStackRefPtr const &layerStack,
295 SdfPath const &path,
296 std::string const &vsetName,
297 std::set<std::string> *result);
298inline void
300 std::string const &vsetName,
301 std::set<std::string> *result)
302{
304 node.GetLayerStack(), node.GetPath(), vsetName, result);
305}
306
308PCP_API
309bool
311 PcpLayerStackRefPtr const &layerStack,
312 SdfPath const &path,
313 std::string const &vsetName,
314 std::string *result,
315 std::unordered_set<std::string> *exprVarDependencies,
316 PcpErrorVector *errors);
317
318inline bool
320 PcpLayerStackRefPtr const &layerStack,
321 SdfPath const &path,
322 std::string const &vsetName,
323 std::string *result)
324{
326 layerStack, path, vsetName, result, nullptr, nullptr);
327}
328
329inline bool
331 std::string const &vsetName,
332 std::string *result)
333{
335 node.GetLayerStack(), node.GetPath(), vsetName, result);
336}
337
339PCP_API
340void
342 PcpLayerStackRefPtr const &layerStack,
343 SdfPath const &path,
345 std::unordered_set<std::string> *exprVarDependencies,
346 PcpErrorVector *errors);
347
348inline void
350 PcpLayerStackRefPtr const &layerStack,
351 SdfPath const &path,
353{
355 layerStack, path, result, nullptr, nullptr);
356}
357
358inline void
361{
363 node.GetLayerStack(), node.GetPath(), result);
364}
365
366PCP_API
367bool
368PcpComposeSiteHasVariantSelections(
369 PcpLayerStackRefPtr const &layerStack,
370 SdfPath const &path);
371
374PCP_API
375void
376PcpComposeSiteChildNames(SdfLayerRefPtrVector const &layers,
377 SdfPath const &path,
378 const TfToken & namesField,
379 TfTokenVector *nameOrder,
380 PcpTokenSet *nameSet,
381 const TfToken *orderField = nullptr);
382
383PXR_NAMESPACE_CLOSE_SCOPE
384
385#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 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 PcpComposeSiteHasPrimSpecs(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, const std::unordered_set< SdfLayerHandle, TfHash > &layersToIgnore)
Has prim specs.
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