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,
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