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
192bool
194 PcpLayerStackRefPtr const &layerStack,
195 SdfPath const &path,
196 const std::unordered_set<SdfLayerHandle, TfHash>& layersToIgnore);
197
198PCP_API
199bool
200PcpComposeSiteHasSpecs(PcpLayerStackRefPtr const &layerStack,
201 SdfPath const &path);
202
203inline bool
205{
206 return PcpComposeSiteHasSpecs(node.GetLayerStack(), node.GetPath());
207}
208
210inline bool
212 PcpLayerStackRefPtr const &layerStack,
213 SdfPath const &path,
214 const std::unordered_set<SdfLayerHandle, TfHash>& layersToIgnore)
215{
216 return PcpComposeSiteHasSpecs(layerStack, path, layersToIgnore);
217}
218
220inline bool
221PcpComposeSiteHasPrimSpecs(PcpLayerStackRefPtr const &layerStack,
222 SdfPath const &path)
223{
224 return PcpComposeSiteHasSpecs(layerStack, path);
225}
226
228inline bool
230{
231 return PcpComposeSiteHasSpecs(node.GetLayerStack(), node.GetPath());
232}
233
235PCP_API
236bool
237PcpComposeSiteHasSymmetry(PcpLayerStackRefPtr const &layerStack,
238 SdfPath const &path);
239inline bool
241{
242 return PcpComposeSiteHasSymmetry(node.GetLayerStack(), node.GetPath());
243}
244
246PCP_API
247bool
248PcpComposeSiteHasValueClips(PcpLayerStackRefPtr const &layerStack,
249 SdfPath const &path);
250PCP_API
251inline bool
253{
255}
256
258PCP_API
259void
260PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
261 SdfPath const &path, SdfPathVector *result,
262 PcpArcInfoVector *info);
263
264PCP_API
265void
266PcpComposeSiteInherits(PcpLayerStackRefPtr const &layerStack,
267 SdfPath const &path, SdfPathVector *result);
268
269inline void
270PcpComposeSiteInherits(PcpNodeRef const &node, SdfPathVector *result)
271{
272 return PcpComposeSiteInherits(node.GetLayerStack(), node.GetPath(), result);
273}
274
276PCP_API
277void
278PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
279 SdfPath const &path, SdfPathVector *result,
280 PcpArcInfoVector *info);
281
282PCP_API
283void
284PcpComposeSiteSpecializes(PcpLayerStackRefPtr const &layerStack,
285 SdfPath const &path, SdfPathVector *result);
286
287inline void
288PcpComposeSiteSpecializes(PcpNodeRef const &node, SdfPathVector *result)
289{
291 node.GetLayerStack(), node.GetPath(), result);
292}
293
295PCP_API
296void
297PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
298 SdfPath const &path,
299 std::vector<std::string> *result,
300 PcpArcInfoVector *info);
301
302PCP_API
303void
304PcpComposeSiteVariantSets(PcpLayerStackRefPtr const &layerStack,
305 SdfPath const &path,
306 std::vector<std::string> *result);
307inline void
309 std::vector<std::string> *result) {
311 node.GetLayerStack(), node.GetPath(), result);
312}
313
315PCP_API
316void
317PcpComposeSiteVariantSetOptions(PcpLayerStackRefPtr const &layerStack,
318 SdfPath const &path,
319 std::string const &vsetName,
320 std::set<std::string> *result);
321inline void
323 std::string const &vsetName,
324 std::set<std::string> *result)
325{
327 node.GetLayerStack(), node.GetPath(), vsetName, result);
328}
329
331PCP_API
332bool
334 PcpLayerStackRefPtr const &layerStack,
335 SdfPath const &path,
336 std::string const &vsetName,
337 std::string *result,
338 std::unordered_set<std::string> *exprVarDependencies,
339 PcpErrorVector *errors);
340
341inline bool
343 PcpLayerStackRefPtr const &layerStack,
344 SdfPath const &path,
345 std::string const &vsetName,
346 std::string *result)
347{
349 layerStack, path, vsetName, result, nullptr, nullptr);
350}
351
352inline bool
354 std::string const &vsetName,
355 std::string *result)
356{
358 node.GetLayerStack(), node.GetPath(), vsetName, result);
359}
360
362PCP_API
363void
365 PcpLayerStackRefPtr const &layerStack,
366 SdfPath const &path,
368 std::unordered_set<std::string> *exprVarDependencies,
369 PcpErrorVector *errors);
370
371inline void
373 PcpLayerStackRefPtr const &layerStack,
374 SdfPath const &path,
376{
378 layerStack, path, result, nullptr, nullptr);
379}
380
381inline void
384{
386 node.GetLayerStack(), node.GetPath(), result);
387}
388
389PCP_API
390bool
391PcpComposeSiteHasVariantSelections(
392 PcpLayerStackRefPtr const &layerStack,
393 SdfPath const &path);
394
397PCP_API
398void
399PcpComposeSiteChildNames(SdfLayerRefPtrVector const &layers,
400 SdfPath const &path,
401 const TfToken & namesField,
402 TfTokenVector *nameOrder,
403 PcpTokenSet *nameSet,
404 const TfToken *orderField = nullptr);
405
406PXR_NAMESPACE_CLOSE_SCOPE
407
408#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:280
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:211
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 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:261
SdfPermission
An enum that defines permission levels.
Definition: types.h:135