Loading...
Searching...
No Matches
resolveTarget.h
1//
2// Copyright 2022 Pixar
3//
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
5// with the following modification; you may not use this file except in
6// compliance with the Apache License and the following modification to it:
7// Section 6. Trademarks. is deleted and replaced with:
8//
9// 6. Trademarks. This License does not grant permission to use the trade
10// names, trademarks, service marks, or product names of the Licensor
11// and its affiliates, except as required to comply with Section 4(c) of
12// the License and to reproduce the content of the NOTICE file.
13//
14// You may obtain a copy of the Apache License at
15//
16// http://www.apache.org/licenses/LICENSE-2.0
17//
18// Unless required by applicable law or agreed to in writing, software
19// distributed under the Apache License with the above modification is
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21// KIND, either express or implied. See the Apache License for the specific
22// language governing permissions and limitations under the Apache License.
23//
24#ifndef PXR_USD_USD_RESOLVE_TARGET_H
25#define PXR_USD_USD_RESOLVE_TARGET_H
26
27#include "pxr/pxr.h"
28#include "pxr/usd/usd/api.h"
29#include "pxr/usd/pcp/node.h"
30#include "pxr/usd/pcp/primIndex.h"
32
33#include <memory>
34
35PXR_NAMESPACE_OPEN_SCOPE
36
37SDF_DECLARE_HANDLES(SdfLayer);
38
74
75public:
76 UsdResolveTarget() = default;
77
79 const PcpPrimIndex *GetPrimIndex() const {
80 return _expandedPrimIndex.get();
81 }
82
85 USD_API
87
90 USD_API
91 SdfLayerHandle GetStartLayer() const;
92
95 USD_API
97
100 USD_API
101 SdfLayerHandle GetStopLayer() const;
102
104 bool IsNull() const {
105 return !bool(_expandedPrimIndex);
106 }
107
108private:
109 // Non-null UsdResolveTargets can only be created by functions in UsdPrim
110 // and UsdPrimCompositionQueryArc.
111 friend class UsdPrim;
112 friend class UsdPrimCompositionQueryArc;
113
114 // Usd_Resolver wants to access the iterators provided by this target.
115 friend class Usd_Resolver;
116
117 USD_API
119 const std::shared_ptr<PcpPrimIndex> &index,
120 const PcpNodeRef &node,
121 const SdfLayerHandle &layer);
122
123 USD_API
125 const std::shared_ptr<PcpPrimIndex> &index,
126 const PcpNodeRef &node,
127 const SdfLayerHandle &layer,
128 const PcpNodeRef &stopNode,
129 const SdfLayerHandle &stopLayer);
130
131 // Resolve targets are created with an expanded prim index either from
132 // a composition query (which owns and holds it) or from a UsdPrim (which
133 // creates it solely to create the resolve target). The expanded prim index
134 // is not otherwise cached, so we have to hold on to it during the lifetime
135 // of the resolve target.
136 std::shared_ptr<PcpPrimIndex> _expandedPrimIndex;
137 PcpNodeRange _nodeRange;
138
139 PcpNodeIterator _startNodeIt;
140 SdfLayerRefPtrVector::const_iterator _startLayerIt;
141 PcpNodeIterator _stopNodeIt;
142 SdfLayerRefPtrVector::const_iterator _stopLayerIt;
143};
144
145PXR_NAMESPACE_CLOSE_SCOPE
146
147#endif // PXR_USD_USD_RESOLVE_TARGET_H
Object used to iterate over nodes in the prim index graph in strong-to-weak order.
Definition: iterator.h:51
PcpNode represents a node in an expression tree for compositing scene description.
Definition: node.h:64
PcpPrimIndex is an index of the all sites of scene description that contribute opinions to a specific...
Definition: primIndex.h:78
A scene description container that can combine with other such containers to form simple component as...
Definition: layer.h:100
This represents a composition arc that is returned by a UsdPrimCompositionQuery.
UsdPrim is the sole persistent scenegraph object on a UsdStage, and is the embodiment of a "Prim" as ...
Definition: prim.h:134
Defines a subrange of nodes and layers within a prim's prim index to consider when performing value r...
Definition: resolveTarget.h:73
USD_API SdfLayerHandle GetStopLayer() const
Returns the layer in the layer stack of the stop node that value resolution with this resolve target ...
USD_API SdfLayerHandle GetStartLayer() const
Returns the layer in the layer stack of the start node that value resolution with this resolve target...
USD_API PcpNodeRef GetStopNode() const
Returns the node that value resolution with this resolve target will stop at when the "stop at" layer...
USD_API PcpNodeRef GetStartNode() const
Returns the node that value resolution with this resolve target will start at.
bool IsNull() const
Returns true if this is a null resolve target.
const PcpPrimIndex * GetPrimIndex() const
Get the prim index of the resolve target.
Definition: resolveTarget.h:79