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
208 PcpLayerStackRefPtr const &layerStack,
209 SdfPath const &path,
210 const std::unordered_set<SdfLayerHandle, TfHash>& layersToIgnore);
211
212PCP_API
213bool
214PcpComposeSiteHasSpecs(PcpLayerStackRefPtr const &layerStack,
215 SdfPath const &path);
216
217inline bool
219{
220 return PcpComposeSiteHasSpecs(node.GetLayerStack(), node.GetPath());
221}
222
224inline bool
226 PcpLayerStackRefPtr const &layerStack,
227 SdfPath const &path,
228 const std::unordered_set<SdfLayerHandle, TfHash>& layersToIgnore)
229{
230 return PcpComposeSiteHasSpecs(layerStack, path, layersToIgnore);
231}
232
234inline bool
235PcpComposeSiteHasPrimSpecs(PcpLayerStackRefPtr const &layerStack,
236 SdfPath const &path)
237{
238 return PcpComposeSiteHasSpecs(layerStack, path);
239}
240
242inline bool
244{
245 return PcpComposeSiteHasSpecs(node.GetLayerStack(), node.GetPath());
246}
247
249PCP_API
250bool
251PcpComposeSiteHasSymmetry(PcpLayerStackRefPtr const &layerStack,
252 SdfPath const &path);
253inline bool
255{
256 return PcpComposeSiteHasSymmetry(node.GetLayerStack(), node.GetPath());
257}
258
260PCP_API
261bool
262PcpComposeSiteHasValueClips(PcpLayerStackRefPtr const &layerStack,
263 SdfPath const &path);
264PCP_API
265inline bool
267{
269}
270
272PCP_API
273void
274PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
275 SdfPath const &path, SdfPathVector *result,
276 PcpArcInfoVector *info);
277
278PCP_API
279void
280PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
281 SdfPath const &path, SdfPathVector *result);
282
283inline void
284PcpComposeSiteInherits(PcpNodeRef const &node, SdfPathVector *result)
285{
286 return PcpComposeSiteInherits(node.GetLayerStack(), node.GetPath(), result);
287}
288
290PCP_API
291void
292PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
293 SdfPath const &path, SdfPathVector *result,
294 PcpArcInfoVector *info);
295
296PCP_API
297void
298PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
299 SdfPath const &path, SdfPathVector *result);
300
301inline void
302PcpComposeSiteSpecializes(PcpNodeRef const &node, SdfPathVector *result)
303{
305 node.GetLayerStack(), node.GetPath(), result);
306}
307
309PCP_API
310void
311PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
312 SdfPath const &path,
313 std::vector<std::string> *result,
314 PcpArcInfoVector *info);
315
316PCP_API
317void
318PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
319 SdfPath const &path,
320 std::vector<std::string> *result);
321inline void
323 std::vector<std::string> *result) {
325 node.GetLayerStack(), node.GetPath(), result);
326}
327
329PCP_API
330void
331PcpComposeSiteVariantSetOptions(PcpLayerStackRefPtr const &layerStack,
332 SdfPath const &path,
333 std::string const &vsetName,
334 std::set<std::string> *result);
335inline void
337 std::string const &vsetName,
338 std::set<std::string> *result)
339{
341 node.GetLayerStack(), node.GetPath(), vsetName, result);
342}
343
345PCP_API
346bool
348 PcpLayerStackRefPtr const &layerStack,
349 SdfPath const &path,
350 std::string const &vsetName,
351 std::string *result,
352 std::unordered_set<std::string> *exprVarDependencies,
353 PcpErrorVector *errors);
354
355inline bool
357 PcpLayerStackRefPtr const &layerStack,
358 SdfPath const &path,
359 std::string const &vsetName,
360 std::string *result)
361{
363 layerStack, path, vsetName, result, nullptr, nullptr);
364}
365
366inline bool
368 std::string const &vsetName,
369 std::string *result)
370{
372 node.GetLayerStack(), node.GetPath(), vsetName, result);
373}
374
376PCP_API
377void
379 PcpLayerStackRefPtr const &layerStack,
380 SdfPath const &path,
382 std::unordered_set<std::string> *exprVarDependencies,
383 PcpErrorVector *errors);
384
385inline void
387 PcpLayerStackRefPtr const &layerStack,
388 SdfPath const &path,
390{
392 layerStack, path, result, nullptr, nullptr);
393}
394
395inline void
398{
400 node.GetLayerStack(), node.GetPath(), result);
401}
402
403PCP_API
404bool
405PcpComposeSiteHasVariantSelections(
406 PcpLayerStackRefPtr const &layerStack,
407 SdfPath const &path);
408
411PCP_API
412void
413PcpComposeSiteChildNames(SdfLayerRefPtrVector const &layers,
414 SdfPath const &path,
415 const TfToken & namesField,
416 TfTokenVector *nameOrder,
417 PcpTokenSet *nameSet,
418 const TfToken *orderField = nullptr);
419
420PXR_NAMESPACE_CLOSE_SCOPE
421
422#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 PcpComposeSiteHasValueClips(PcpLayerStackRefPtr const &layerStack, SdfPath const &path)
Value clips.
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.
bool PcpComposeSiteHasPrimSpecs(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, const std::unordered_set< SdfLayerHandle, TfHash > &layersToIgnore)
Definition: composeSite.h:225
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.
PCP_API bool PcpComposeSiteHasSpecs(PcpLayerStackRefPtr const &layerStack, SdfPath const &path, const std::unordered_set< SdfLayerHandle, TfHash > &layersToIgnore)
Has prim or property specs.
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