collisionGroup.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 USDPHYSICS_GENERATED_COLLISIONGROUP_H
25 #define USDPHYSICS_GENERATED_COLLISIONGROUP_H
26 
28 
29 #include "pxr/pxr.h"
30 #include "pxr/usd/usdPhysics/api.h"
31 #include "pxr/usd/usd/typed.h"
32 #include "pxr/usd/usd/prim.h"
33 #include "pxr/usd/usd/stage.h"
35 
37 
38 #include "pxr/base/vt/value.h"
39 
40 #include "pxr/base/gf/vec3d.h"
41 #include "pxr/base/gf/vec3f.h"
42 #include "pxr/base/gf/matrix4d.h"
43 
44 #include "pxr/base/tf/token.h"
45 #include "pxr/base/tf/type.h"
46 
47 PXR_NAMESPACE_OPEN_SCOPE
48 
49 class SdfAssetPath;
50 
51 // -------------------------------------------------------------------------- //
52 // PHYSICSCOLLISIONGROUP //
53 // -------------------------------------------------------------------------- //
54 
67 {
68 public:
73 
78  explicit UsdPhysicsCollisionGroup(const UsdPrim& prim=UsdPrim())
79  : UsdTyped(prim)
80  {
81  }
82 
86  explicit UsdPhysicsCollisionGroup(const UsdSchemaBase& schemaObj)
87  : UsdTyped(schemaObj)
88  {
89  }
90 
92  USDPHYSICS_API
93  virtual ~UsdPhysicsCollisionGroup();
94 
98  USDPHYSICS_API
99  static const TfTokenVector &
100  GetSchemaAttributeNames(bool includeInherited=true);
101 
111  USDPHYSICS_API
113  Get(const UsdStagePtr &stage, const SdfPath &path);
114 
137  USDPHYSICS_API
139  Define(const UsdStagePtr &stage, const SdfPath &path);
140 
141 protected:
145  USDPHYSICS_API
146  UsdSchemaKind _GetSchemaKind() const override;
147 
148 private:
149  // needs to invoke _GetStaticTfType.
150  friend class UsdSchemaRegistry;
151  USDPHYSICS_API
152  static const TfType &_GetStaticTfType();
153 
154  static bool _IsTypedSchema();
155 
156  // override SchemaBase virtuals.
157  USDPHYSICS_API
158  const TfType &_GetTfType() const override;
159 
160 public:
161  // --------------------------------------------------------------------- //
162  // MERGEGROUPNAME
163  // --------------------------------------------------------------------- //
174  USDPHYSICS_API
176 
182  USDPHYSICS_API
183  UsdAttribute CreateMergeGroupNameAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const;
184 
185 public:
186  // --------------------------------------------------------------------- //
187  // INVERTFILTEREDGROUPS
188  // --------------------------------------------------------------------- //
199  USDPHYSICS_API
201 
207  USDPHYSICS_API
208  UsdAttribute CreateInvertFilteredGroupsAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const;
209 
210 public:
211  // --------------------------------------------------------------------- //
212  // FILTEREDGROUPS
213  // --------------------------------------------------------------------- //
217  USDPHYSICS_API
219 
222  USDPHYSICS_API
224 
225 public:
226  // ===================================================================== //
227  // Feel free to add custom code below this line, it will be preserved by
228  // the code generator.
229  //
230  // Just remember to:
231  // - Close the class declaration with };
232  // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE
233  // - Close the include guard with #endif
234  // ===================================================================== //
235  // --(BEGIN CUSTOM CODE)--
236 
239  USDPHYSICS_API
241 
246  {
249  USDPHYSICS_API
250  const SdfPathVector& GetCollisionGroups() const;
251 
253  USDPHYSICS_API
254  bool IsCollisionEnabled(const unsigned int idxA,
255  const unsigned int idxB) const;
256 
258  USDPHYSICS_API
259  bool IsCollisionEnabled(const SdfPath& primA,
260  const SdfPath& primB) const;
261 
262  protected:
263  friend class UsdPhysicsCollisionGroup;
264  // < All collision groups known to this table
265  SdfPathVector _groups;
266  // < 2D table, with one element per collision-group-pair. Entry is false
267  // if collision is disabled by a filtering rule.
268  std::vector<bool> _enabled;
269  };
270 
275  static USDPHYSICS_API
277 };
278 
279 PXR_NAMESPACE_CLOSE_SCOPE
280 
281 #endif
USDPHYSICS_API UsdAttribute CreateMergeGroupNameAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetMergeGroupNameAttr(), and also Create vs Get Property Methods for when to use Get vs Create.
Defines a collision group for coarse filtering.
UsdPhysicsCollisionGroup(const UsdSchemaBase &schemaObj)
Construct a UsdPhysicsCollisionGroup on the prim held by schemaObj .
The outermost container for scene description, which owns and presents composed prims as a scenegraph...
Definition: stage.h:147
static const UsdSchemaKind schemaKind
Compile time constant representing what kind of schema this class is.
Scenegraph object for authoring and retrieving numeric, string, and array valued data,...
Definition: attribute.h:176
UsdSchemaKind
An enum representing which kind of schema a given schema class belongs to.
Definition: common.h:127
Utility structure generated by ComputeCollisionGroupTable(); contains a table describing which pairs ...
USDPHYSICS_API const SdfPathVector & GetCollisionGroups() const
Return the set of all UsdPhysicsCollisionGroup which this table contains.
This is a general purpose API schema, used to describe a collection of heterogeneous objects within t...
static USDPHYSICS_API const TfTokenVector & GetSchemaAttributeNames(bool includeInherited=true)
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor cl...
USDPHYSICS_API UsdRelationship CreateFilteredGroupsRel() const
See GetFilteredGroupsRel(), and also Create vs Get Property Methods for when to use Get vs Create.
Represents a concrete typed schema.
static USDPHYSICS_API UsdPhysicsCollisionGroup Get(const UsdStagePtr &stage, const SdfPath &path)
Return a UsdPhysicsCollisionGroup holding the prim adhering to this schema at path on stage.
UsdPrim is the sole persistent scenegraph object on a UsdStage, and is the embodiment of a "Prim" as ...
Definition: prim.h:135
The base class for all typed schemas (those that can impart a typeName to a UsdPrim),...
Definition: typed.h:61
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:442
UsdPhysicsCollisionGroup(const UsdPrim &prim=UsdPrim())
Construct a UsdPhysicsCollisionGroup on UsdPrim prim .
USDPHYSICS_API UsdCollectionAPI GetCollidersCollectionAPI() const
Return the UsdCollectionAPI interface used for defining what colliders belong to the CollisionGroup.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:290
USDPHYSICS_API UsdAttribute GetMergeGroupNameAttr() const
If non-empty, any collision groups in a stage with a matching mergeGroup should be considered to refe...
A UsdRelationship creates dependencies between scenegraph objects by allowing a prim to target other ...
Definition: relationship.h:128
USDPHYSICS_API bool IsCollisionEnabled(const unsigned int idxA, const unsigned int idxB) const
Return true if the groups at indices idxA and idxB collide.
Contains an asset path and an optional resolved path.
Definition: assetPath.h:47
USDPHYSICS_API UsdSchemaKind _GetSchemaKind() const override
Returns the kind of schema this class belongs to.
TfType represents a dynamic runtime type.
Definition: type.h:64
Singleton registry that provides access to schema type information and the prim definitions for regis...
USDPHYSICS_API UsdRelationship GetFilteredGroupsRel() const
References a list of PhysicsCollisionGroups with which collisions should be ignored.
static USDPHYSICS_API CollisionGroupTable ComputeCollisionGroupTable(const UsdStage &stage)
Compute a table encoding all the collision groups filter rules for a stage.
The base class for all schema types in Usd.
Definition: schemaBase.h:56
static USDPHYSICS_API UsdPhysicsCollisionGroup Define(const UsdStagePtr &stage, const SdfPath &path)
Attempt to ensure a UsdPrim adhering to this schema at path is defined (according to UsdPrim::IsDefin...
USDPHYSICS_API UsdAttribute GetInvertFilteredGroupsAttr() const
Normally, the filter will disable collisions against the selected filter groups.
Provides a container which may hold any type, and provides introspection and iteration over array typ...
Definition: value.h:166
USDPHYSICS_API UsdAttribute CreateInvertFilteredGroupsAttr(VtValue const &defaultValue=VtValue(), bool writeSparsely=false) const
See GetInvertFilteredGroupsAttr(), and also Create vs Get Property Methods for when to use Get vs Cre...
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
virtual USDPHYSICS_API ~UsdPhysicsCollisionGroup()
Destructor.