All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
collectionAPI.h
Go to the documentation of this file.
1 //
2 // Copyright 2016 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 USD_GENERATED_COLLECTIONAPI_H
25 #define USD_GENERATED_COLLECTIONAPI_H
26 
28 
29 #include "pxr/pxr.h"
30 #include "pxr/usd/usd/api.h"
31 #include "pxr/usd/usd/apiSchemaBase.h"
32 #include "pxr/usd/usd/prim.h"
33 #include "pxr/usd/usd/stage.h"
34 #include "pxr/usd/usd/tokens.h"
35 
36 #include "pxr/usd/usd/collectionMembershipQuery.h"
37 #include "pxr/usd/usd/primFlags.h"
38 #include "pxr/usd/usd/tokens.h"
39 
40 
41 #include "pxr/base/vt/value.h"
42 
43 #include "pxr/base/gf/vec3d.h"
44 #include "pxr/base/gf/vec3f.h"
45 #include "pxr/base/gf/matrix4d.h"
46 
47 #include "pxr/base/tf/token.h"
48 #include "pxr/base/tf/type.h"
49 
50 PXR_NAMESPACE_OPEN_SCOPE
51 
52 class SdfAssetPath;
53 
54 // -------------------------------------------------------------------------- //
55 // COLLECTIONAPI //
56 // -------------------------------------------------------------------------- //
57 
153 {
154 public:
159 
170  const UsdPrim& prim=UsdPrim(), const TfToken &name=TfToken())
171  : UsdAPISchemaBase(prim, /*instanceName*/ name)
172  { }
173 
179  const UsdSchemaBase& schemaObj, const TfToken &name)
180  : UsdAPISchemaBase(schemaObj, /*instanceName*/ name)
181  { }
182 
184  USD_API
185  virtual ~UsdCollectionAPI();
186 
192  USD_API
193  static const TfTokenVector &
195  bool includeInherited=true, const TfToken instanceName=TfToken());
196 
198  TfToken GetName() const {
199  return _GetInstanceName();
200  }
201 
216  USD_API
217  static UsdCollectionAPI
218  Get(const UsdStagePtr &stage, const SdfPath &path);
219 
222  USD_API
223  static UsdCollectionAPI
224  Get(const UsdPrim &prim, const TfToken &name);
225 
228  USD_API
229  static bool
230  IsSchemaPropertyBaseName(const TfToken &baseName);
231 
235  USD_API
236  static bool
237  IsCollectionAPIPath(const SdfPath &path, TfToken *name);
238 private:
239 
256  static UsdCollectionAPI
257  _Apply(const UsdPrim &prim, const TfToken &name);
258 
259 protected:
263  USD_API
264  UsdSchemaType _GetSchemaType() const override;
265 
266 private:
267  // needs to invoke _GetStaticTfType.
268  friend class UsdSchemaRegistry;
269  USD_API
270  static const TfType &_GetStaticTfType();
271 
272  static bool _IsTypedSchema();
273 
274  // override SchemaBase virtuals.
275  USD_API
276  const TfType &_GetTfType() const override;
277 
278 public:
279  // --------------------------------------------------------------------- //
280  // EXPANSIONRULE
281  // --------------------------------------------------------------------- //
292  USD_API
294 
300  USD_API
301  UsdAttribute CreateExpansionRuleAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const;
302 
303 public:
304  // --------------------------------------------------------------------- //
305  // INCLUDEROOT
306  // --------------------------------------------------------------------- //
318  USD_API
320 
326  USD_API
327  UsdAttribute CreateIncludeRootAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const;
328 
329 public:
330  // --------------------------------------------------------------------- //
331  // INCLUDES
332  // --------------------------------------------------------------------- //
339  USD_API
341 
344  USD_API
346 
347 public:
348  // --------------------------------------------------------------------- //
349  // EXCLUDES
350  // --------------------------------------------------------------------- //
364  USD_API
366 
369  USD_API
371 
372 public:
373  // ===================================================================== //
374  // Feel free to add custom code below this line, it will be preserved by
375  // the code generator.
376  //
377  // Just remember to:
378  // - Close the class declaration with };
379  // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE
380  // - Close the include guard with #endif
381  // ===================================================================== //
382  // --(BEGIN CUSTOM CODE)--
383 
384 public:
396  USD_API
398  const UsdPrim& prim,
399  const TfToken &name,
400  const TfToken &expansionRule=UsdTokens->expandPrims);
401 
404  USD_API
405  static UsdCollectionAPI GetCollection(const UsdStagePtr &stage,
406  const SdfPath &collectionPath);
407 
410  USD_API
411  static UsdCollectionAPI GetCollection(const UsdPrim &prim,
412  const TfToken &name);
413 
415  USD_API
416  static std::vector<UsdCollectionAPI> GetAllCollections(const UsdPrim &prim);
417 
424  USD_API
425  SdfPath GetCollectionPath() const;
426 
431  USD_API
433  const UsdPrim &prim,
434  const TfToken &collectionName);
435 
436  // Convenient alias for UsdCollectionMembershipQuery object
437  using MembershipQuery = UsdCollectionMembershipQuery;
438 
441  USD_API
443 
446  USD_API
448 
456  USD_API
457  bool HasNoIncludedPaths() const;
458 
464  USD_API
465  static std::set<UsdObject> ComputeIncludedObjects(
466  const UsdCollectionMembershipQuery &query,
467  const UsdStageWeakPtr &stage,
468  const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate);
469 
475  USD_API
476  static SdfPathSet ComputeIncludedPaths(
477  const UsdCollectionMembershipQuery &query,
478  const UsdStageWeakPtr &stage,
479  const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate);
480 
482 
490 
501  USD_API
502  bool IncludePath(const SdfPath &pathToInclude) const;
503 
516  USD_API
517  bool ExcludePath(const SdfPath &pathToExclude) const;
518 
520 
528  USD_API
529  bool Validate(std::string *reason) const;
530 
536  USD_API
537  bool ResetCollection() const;
538 
544  USD_API
545  bool BlockCollection() const;
546 
547 private:
548 
549  // Returns the name of the property belonging to this collection, given the
550  // base name of the attribute. Eg, if baseName is 'includes', this
551  // returns 'collection:<name>:includes'.
552  TfToken _GetCollectionPropertyName(const TfToken &baseName=TfToken()) const;
553 
554  // Helper method for computing the UsdCollectionMembershipQuery object for
555  // a collection.
556  // This makes recursive calls if the collection includes other collections.
557  // \p chainedCollectionPaths is used to pass in the set of all seen and
558  // included collections in the dependency chain and is used to detect
559  // circular dependencies.
560  // If \p foundCircularDependency is not nullptr, it is set to true if a
561  // circular dependency is detected amongst the included collections.
562  // If it is nullptr, a warning is issued when a circular dependency is
563  // detected.
564  void _ComputeMembershipQueryImpl(
566  const SdfPathSet &chainedCollectionPaths,
567  bool *foundCircularDependency=nullptr) const;
568 };
569 
570 PXR_NAMESPACE_CLOSE_SCOPE
571 
572 #endif
static USD_API UsdCollectionAPI GetCollection(const UsdStagePtr &stage, const SdfPath &collectionPath)
Returns the collection represented by the given collection path, collectionPath on the given USD stag...
USD_API bool Validate(std::string *reason) const
Validates the collection by checking the following rules:
USD_API bool IncludePath(const SdfPath &pathToInclude) const
Includes or adds the given path, pathToInclude in the collection.
unspecified UsdPrimDefaultPredicate
The default predicate used for prim traversals in methods like UsdPrim::GetChildren, UsdStage::Traverse, and by UsdPrimRange.
TfToken GetName() const
Returns the name of this multiple-apply schema instance.
USD_API UsdSchemaType _GetSchemaType() const override
Returns the type of schema this class belongs to.
static const UsdSchemaType schemaType
Compile time constant representing what kind of schema this class is.
Represents a flattened view of a collection.
USD_API UsdAttribute GetExpansionRuleAttr() const
Specifies how the paths that are included in the collection must be expanded to determine its members...
The base class for all API schemas.
Scenegraph object for authoring and retrieving numeric, string, and array valued data, sampled over time.
Definition: attribute.h:176
USD_API UsdRelationship GetExcludesRel() const
Specifies a list of targets that are excluded below the included paths in this collection.
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:89
USD_API UsdAttribute CreateIncludeRootAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetIncludeRootAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
UsdCollectionAPI(const UsdPrim &prim=UsdPrim(), const TfToken &name=TfToken())
Construct a UsdCollectionAPI on UsdPrim prim with name name .
This is a general purpose API schema, used to describe a collection of heterogeneous objects within t...
Multiple Apply API Schema.
USD_API bool BlockCollection() const
Blocks the targets of the includes and excludes relationships of the collection, making it &lt;* empty i...
static USD_API std::vector< UsdCollectionAPI > GetAllCollections(const UsdPrim &prim)
Returns all the named collections on the given USD prim.
USD_API UsdRelationship CreateIncludesRel() const
See GetIncludesRel(), and also Create vs Get Property Methods for when to use Get vs Create...
static USD_API UsdCollectionAPI Get(const UsdStagePtr &stage, const SdfPath &path)
Return a UsdCollectionAPI holding the prim adhering to this schema at path on stage.
UsdSchemaType
An enum representing which type of schema a given schema class belongs to.
Definition: common.h:127
UsdPrim is the sole persistent scenegraph object on a UsdStage, and is the embodiment of a &quot;Prim&quot; as ...
Definition: prim.h:131
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:433
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:287
static USD_API SdfPath GetNamedCollectionPath(const UsdPrim &prim, const TfToken &collectionName)
Returns the canonical path to the collection named, name on the given prim, prim. ...
static USD_API UsdCollectionAPI ApplyCollection(const UsdPrim &prim, const TfToken &name, const TfToken &expansionRule=UsdTokens->expandPrims)
Adds a new collection named name on the given prim, prim with the specified expansion-rule, expansionRule.
static USD_API const TfTokenVector & GetSchemaAttributeNames(bool includeInherited=true, const TfToken instanceName=TfToken())
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor cl...
static USD_API bool IsSchemaPropertyBaseName(const TfToken &baseName)
Checks if the given name baseName is the base name of a property of CollectionAPI.
A UsdRelationship creates dependencies between scenegraph objects by allowing a prim to target other ...
Definition: relationship.h:128
Contains an asset path and an optional resolved path.
Definition: assetPath.h:43
static USD_API SdfPathSet ComputeIncludedPaths(const UsdCollectionMembershipQuery &query, const UsdStageWeakPtr &stage, const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate)
Returns all the paths that satisfy the predicate, pred in the collection represented by the UsdCollec...
USD_API UsdCollectionMembershipQuery ComputeMembershipQuery() const
Computes and returns a UsdCollectionMembershipQuery object which can be used to query inclusion or ex...
static USD_API std::set< UsdObject > ComputeIncludedObjects(const UsdCollectionMembershipQuery &query, const UsdStageWeakPtr &stage, const Usd_PrimFlagsPredicate &pred=UsdPrimDefaultPredicate)
Returns all the usd objects that satisfy the predicate, pred in the collection represented by the Usd...
USD_API bool ExcludePath(const SdfPath &pathToExclude) const
Excludes or removes the given path, pathToExclude from the collection.
UsdCollectionAPI(const UsdSchemaBase &schemaObj, const TfToken &name)
Construct a UsdCollectionAPI on the prim held by schemaObj with name name.
USD_API bool ResetCollection() const
Resets the collection by clearing both the includes and excludes targets of the collection in the cur...
USD_API UsdRelationship CreateExcludesRel() const
See GetExcludesRel(), and also Create vs Get Property Methods for when to use Get vs Create...
TfType represents a dynamic runtime type.
Definition: type.h:70
Singleton registry that provides access to prim and property definition information for registered Us...
virtual USD_API ~UsdCollectionAPI()
Destructor.
USD_API SdfPath GetCollectionPath() const
Returns the canonical path that represents this collection.
USD_API UsdRelationship GetIncludesRel() const
Specifies a list of targets that are included in the collection.
The base class for all schema types in Usd.
Definition: schemaBase.h:56
static USD_API bool IsCollectionAPIPath(const SdfPath &path, TfToken *name)
Checks if the given path path is of an API schema of type CollectionAPI.
USD_API UsdAttribute CreateExpansionRuleAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetExpansionRuleAttr(), and also Create vs Get Property Methods for when to use Get vs Create...
USD_API bool HasNoIncludedPaths() const
Returns true if the collection has nothing included in it.
USD_API UsdAttribute GetIncludeRootAttr() const
Boolean attribute indicating whether the pseudo-root path &lt;/&gt; should be counted as one of the include...
Provides a container which may hold any type, and provides introspection and iteration over array typ...
Definition: value.h:182
const TfToken & _GetInstanceName() const
Returns the instance name of the API schema object belonging to a multiple-apply API schema...