RavEngine
Loading...
Searching...
No Matches
NpShape.h
1// Redistribution and use in source and binary forms, with or without
2// modification, are permitted provided that the following conditions
3// are met:
4// * Redistributions of source code must retain the above copyright
5// notice, this list of conditions and the following disclaimer.
6// * Redistributions in binary form must reproduce the above copyright
7// notice, this list of conditions and the following disclaimer in the
8// documentation and/or other materials provided with the distribution.
9// * Neither the name of NVIDIA CORPORATION nor the names of its
10// contributors may be used to endorse or promote products derived
11// from this software without specific prior written permission.
12//
13// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
14// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24//
25// Copyright (c) 2008-2022 NVIDIA Corporation. All rights reserved.
26// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
27// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
28
29#ifndef NP_SHAPE_H
30#define NP_SHAPE_H
31
32#include "common/PxMetaData.h"
33#include "PxShape.h"
34#include "NpBase.h"
35#include "ScShapeCore.h"
36#include "NpPhysics.h"
37#include "CmPtrTable.h"
38
39namespace physx
40{
41class NpScene;
42
43class NpShape : public PxShape, public NpBase
44{
45//= ATTENTION! =====================================================================================
46// Changing the data layout of this class breaks the binary serialization format. See comments for
47// PX_BINARY_SERIAL_VERSION. If a modification is required, please adjust the getBinaryMetaData
48// function. If the modification is made on a custom branch, please change PX_BINARY_SERIAL_VERSION
49// accordingly.
50//==================================================================================================
51public:
52// PX_SERIALIZATION
53 NpShape(PxBaseFlags baseFlags);
54 void preExportDataReset();
55 virtual void exportExtraData(PxSerializationContext& context);
56 void importExtraData(PxDeserializationContext& context);
57 virtual void requiresObjects(PxProcessPxBaseCallback& c);
58 void resolveReferences(PxDeserializationContext& context);
59 static NpShape* createObject(PxU8*& address, PxDeserializationContext& context);
60 static void getBinaryMetaData(PxOutputStream& stream);
61//~PX_SERIALIZATION
62 NpShape(const PxGeometry& geometry,
63 PxShapeFlags shapeFlags,
64 const PxU16* materialIndices,
65 PxU16 materialCount,
66 bool isExclusive,
67 PxShapeCoreFlag::Enum flag = PxShapeCoreFlag::Enum(0));
68
69 virtual ~NpShape();
70
71 // PxRefCounted
72 virtual PxU32 getReferenceCount() const PX_OVERRIDE;
73 virtual void acquireReference() PX_OVERRIDE;
74 //~PxRefCounted
75
76 // PxShape
77 virtual void release() PX_OVERRIDE;
78 virtual void setGeometry(const PxGeometry&) PX_OVERRIDE;
79 virtual const PxGeometry& getGeometry() const PX_OVERRIDE;
80 virtual PxRigidActor* getActor() const PX_OVERRIDE;
81 virtual void setLocalPose(const PxTransform& pose) PX_OVERRIDE;
82 virtual PxTransform getLocalPose() const PX_OVERRIDE;
83 virtual void setSimulationFilterData(const PxFilterData& data) PX_OVERRIDE;
85 virtual void setQueryFilterData(const PxFilterData& data) PX_OVERRIDE;
87 virtual void setMaterials(PxMaterial*const* materials, PxU16 materialCount) PX_OVERRIDE;
88 virtual void setSoftBodyMaterials(PxFEMSoftBodyMaterial*const* materials, PxU16 materialCount) PX_OVERRIDE;
89 virtual void setClothMaterials(PxFEMClothMaterial*const* materials, PxU16 materialCount) PX_OVERRIDE;
90 virtual PxU16 getNbMaterials() const PX_OVERRIDE;
91 virtual PxU32 getMaterials(PxMaterial** userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const PX_OVERRIDE;
92 virtual PxU32 getSoftBodyMaterials(PxFEMSoftBodyMaterial** userBuffer, PxU32 bufferSize, PxU32 startIndex = 0) const PX_OVERRIDE;
93 virtual PxU32 getClothMaterials(PxFEMClothMaterial** userBuffer, PxU32 bufferSize, PxU32 startIndex = 0) const PX_OVERRIDE;
94 virtual PxBaseMaterial* getMaterialFromInternalFaceIndex(PxU32 faceIndex) const PX_OVERRIDE;
95 virtual void setContactOffset(PxReal) PX_OVERRIDE;
96 virtual PxReal getContactOffset() const PX_OVERRIDE;
97 virtual void setRestOffset(PxReal) PX_OVERRIDE;
98 virtual PxReal getRestOffset() const PX_OVERRIDE;
99 virtual void setDensityForFluid(PxReal) PX_OVERRIDE;
100 virtual PxReal getDensityForFluid() const PX_OVERRIDE;
101 virtual void setTorsionalPatchRadius(PxReal) PX_OVERRIDE;
102 virtual PxReal getTorsionalPatchRadius() const PX_OVERRIDE;
103 virtual void setMinTorsionalPatchRadius(PxReal) PX_OVERRIDE;
104 virtual PxReal getMinTorsionalPatchRadius() const PX_OVERRIDE;
105 virtual void setFlag(PxShapeFlag::Enum flag, bool value) PX_OVERRIDE;
106 virtual void setFlags(PxShapeFlags inFlags) PX_OVERRIDE;
107 virtual PxShapeFlags getFlags() const PX_OVERRIDE;
108 virtual bool isExclusive() const PX_OVERRIDE;
109 virtual void setName(const char* debugName) PX_OVERRIDE;
110 virtual const char* getName() const PX_OVERRIDE;
111 //~PxShape
112
113 // Ref counting for shapes works like this:
114 // * for exclusive shapes the actor has a counted reference
115 // * for shared shapes, each actor has a counted reference, and the user has a counted reference
116 // * for either kind, each instance of the shape in a scene (i.e. each shapeSim) causes the reference count to be incremented by 1.
117 // Because these semantics aren't clear to users, this reference count should not be exposed in the API
118
119 // PxBase
120 virtual void onRefCountZero() PX_OVERRIDE;
121 //~PxBase
122
123 PX_FORCE_INLINE PxShapeFlags getFlagsFast() const { return mCore.getFlags(); }
124 PX_FORCE_INLINE const PxTransform& getLocalPoseFast() const { return mCore.getShape2Actor(); }
125 PX_FORCE_INLINE PxGeometryType::Enum getGeometryTypeFast() const { return mCore.getGeometryType(); }
126 PX_FORCE_INLINE const PxFilterData& getQueryFilterDataFast() const { return mQueryFilterData; }
127
128 PX_FORCE_INLINE PxU32 getActorCount() const { return mFreeSlot & ACTOR_COUNT_MASK; }
129 PX_FORCE_INLINE bool isExclusiveFast() const { return mCore.getCore().mShapeCoreFlags.isSet(PxShapeCoreFlag::eIS_EXCLUSIVE); }
130
131 PX_FORCE_INLINE const Sc::ShapeCore& getCore() const { return mCore; }
132 PX_FORCE_INLINE Sc::ShapeCore& getCore() { return mCore; }
133 static PX_FORCE_INLINE size_t getCoreOffset() { return PX_OFFSET_OF_RT(NpShape, mCore); }
134
135
136 // PT: TODO: this one only used internally and by NpFactory
137 template <typename PxMaterialType, typename NpMaterialType>
138 PX_INLINE PxMaterialType* getMaterial(PxU32 index) const { return scGetMaterial<NpMaterialType>(index); }
139
140 PX_FORCE_INLINE void setSceneIfExclusive(NpScene* s)
141 {
142 if(isExclusiveFast())
143 setNpScene(s);
144 }
145
146 void releaseInternal(); // PT: it's "internal" but called by the NpFactory
147 template <typename PxMaterialType>
148 static PX_INLINE bool checkMaterialSetup(const PxGeometry& geom, const char* errorMsgPrefix, PxMaterialType*const* materials, PxU16 materialCount);
149
150 void onActorAttach(PxActor& actor);
151 void onActorDetach();
152
153 void incActorCount();
154 void decActorCount();
155
156 //Always returns 0xffffffff for shared shapes.
157 PX_FORCE_INLINE PxU32 getShapeManagerArrayIndex(const Cm::PtrTable& shapes) const
158 {
159 if(isExclusiveFast())
160 {
161 PX_ASSERT(isExclusiveFast() || NP_UNUSED_BASE_INDEX == getBaseIndex());
162 PX_ASSERT(!isExclusiveFast() || NP_UNUSED_BASE_INDEX != getBaseIndex());
163 const PxU32 index = getBaseIndex();
164 return index!=NP_UNUSED_BASE_INDEX ? index : 0xffffffff;
165 }
166 else
167 return shapes.find(this);
168 }
169 PX_FORCE_INLINE bool checkShapeManagerArrayIndex(const Cm::PtrTable& shapes) const
170 {
171 return
172 ((!isExclusiveFast() && NP_UNUSED_BASE_INDEX==getBaseIndex()) ||
173 ((getBaseIndex() < shapes.getCount()) && (shapes.getPtrs()[getBaseIndex()] == this)));
174 }
175 PX_FORCE_INLINE void setShapeManagerArrayIndex(const PxU32 id)
176 {
177 setBaseIndex(isExclusiveFast() ? id : NP_UNUSED_BASE_INDEX);
178 }
179 PX_FORCE_INLINE void clearShapeManagerArrayIndex()
180 {
181 setBaseIndex(NP_UNUSED_BASE_INDEX);
182 }
183
184 PX_FORCE_INLINE PxRigidActor* getRigidActor() const { return mActor->is<PxRigidActor>(); }
185private:
186 PxActor* mActor;
187 Sc::ShapeCore mCore;
188 PxFilterData mQueryFilterData; // Query filter data PT: TODO: consider moving this to SQ structures
189
190 static const PxI32 EXCLUSIVE_MASK = 0x80000000;
191 static const PxI32 ACTOR_COUNT_MASK = 0x7fffffff;
192private:
193 void notifyActorAndUpdatePVD(Sc::ShapeChangeNotifyFlags notifyFlags);
194 void notifyActorAndUpdatePVD(const PxShapeFlags oldShapeFlags); // PT: for shape flags change
195 void incMeshRefCount();
196 void decMeshRefCount();
197 PxRefCounted* getMeshRefCountable();
198 bool isWritable();
199 void updateSQ(const char* errorMessage);
200 template <typename PxMaterialType, typename NpMaterialType>
201 bool setMaterialsHelper(PxMaterialType* const* materials, PxU16 materialCount);
202 void setFlagsInternal(PxShapeFlags inFlags);
203 Sc::RigidCore& getScRigidObjectExclusive() const;
204 PX_FORCE_INLINE Sc::RigidCore* getScRigidObjectSLOW()
205 {
206 return NpShape::getActor() ? &getScRigidObjectExclusive() : NULL;
207 }
208
209 PX_INLINE PxU16 scGetNbMaterials() const
210 {
211 return mCore.getNbMaterialIndices();
212 }
213
214 template <typename Material>
215 PX_INLINE Material* scGetMaterial(PxU32 index) const
216 {
217 PX_ASSERT(index < scGetNbMaterials());
218
220 // PT: TODO: revisit this indirection
221 const PxU16 matTableIndex = mCore.getMaterialIndices()[index];
222 return matManager.getMaterial(matTableIndex);
223 }
224
225 // PT: TODO: this one only used internally
226 template <typename PxMaterialType, typename NpMaterialType>
227 PX_INLINE PxU32 scGetMaterials(PxMaterialType** buffer, PxU32 bufferSize, PxU32 startIndex=0) const
228 {
229 const PxU16* materialIndices;
230 PxU32 matCount;
232 materialIndices = mCore.getMaterialIndices();
233 matCount = mCore.getNbMaterialIndices();
234
235 // PT: this is copied from Cm::getArrayOfPointers(). We cannot use the Cm function here
236 // because of the extra indirection needed to access the materials.
237 PxU32 size = matCount;
238 const PxU32 remainder = PxU32(PxMax<PxI32>(PxI32(size - startIndex), 0));
239 const PxU32 writeCount = PxMin(remainder, bufferSize);
240 materialIndices += startIndex;
241 for(PxU32 i=0;i<writeCount;i++)
242 buffer[i] = matManager.getMaterial(materialIndices[i]);
243
244 return writeCount;
245 }
246
247 template<typename PxMaterialType, typename NpMaterialType> void setMaterialsInternal(PxMaterialType* const * materials, PxU16 materialCount);
248};
249
250template <typename PxMaterialType>
251PX_INLINE bool NpShape::checkMaterialSetup(const PxGeometry& geom, const char* errorMsgPrefix, PxMaterialType*const* materials, PxU16 materialCount)
252{
253 for (PxU32 i = 0; i < materialCount; ++i)
254 {
255 if (!materials[i])
256 {
257 PxGetFoundation().error(PxErrorCode::eDEBUG_WARNING, __FILE__, __LINE__,
258 "material pointer %d is NULL!", i);
259 return false;
260 }
261 }
262
263 // check that simple shapes don't get assigned multiple materials
264 if (materialCount > 1 && (geom.getType() != PxGeometryType::eHEIGHTFIELD) && (geom.getType() != PxGeometryType::eTRIANGLEMESH) && (geom.getType() != PxGeometryType::eTETRAHEDRONMESH))
265 {
266 PxGetFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__,
267 "%s: multiple materials defined for single material geometry!", errorMsgPrefix);
268 return false;
269 }
270
271 // verify we provide all materials required
272 if (materialCount > 1 && (geom.getType() == PxGeometryType::eTRIANGLEMESH))
273 {
274 const PxTriangleMeshGeometry& meshGeom = static_cast<const PxTriangleMeshGeometry&>(geom);
275 const PxTriangleMesh& mesh = *meshGeom.triangleMesh;
276
277 // do not allow SDF multi-material tri-meshes:
278 if (mesh.getSDF())
279 {
280 PxGetFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__,
281 "%s: multiple materials defined for an SDF triangle-mesh geometry!", errorMsgPrefix);
282 return false;
283 }
284
285 if (mesh.getTriangleMaterialIndex(0) != 0xffff)
286 {
287 for (PxU32 i = 0; i < mesh.getNbTriangles(); i++)
288 {
289 const PxMaterialTableIndex meshMaterialIndex = mesh.getTriangleMaterialIndex(i);
290 if (meshMaterialIndex >= materialCount)
291 {
292 PxGetFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__,
293 "%s: PxTriangleMesh material indices reference more materials than provided!", errorMsgPrefix);
294 break;
295 }
296 }
297 }
298 }
299
300 if (materialCount > 1 && (geom.getType() == PxGeometryType::eTETRAHEDRONMESH))
301 {
302 const PxTetrahedronMeshGeometry& meshGeom = static_cast<const PxTetrahedronMeshGeometry&>(geom);
303 const PxTetrahedronMesh& mesh = *meshGeom.tetrahedronMesh;
304 PX_UNUSED(mesh);
305 //Need to fill in material
306 /*if (mesh.getTriangleMaterialIndex(0) != 0xffff)
307 {
308 for (PxU32 i = 0; i < mesh.getNbTriangles(); i++)
309 {
310 const PxMaterialTableIndex meshMaterialIndex = mesh.getTriangleMaterialIndex(i);
311 if (meshMaterialIndex >= materialCount)
312 {
313 PxGetFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__,
314 "%s: PxTriangleMesh material indices reference more materials than provided!", errorMsgPrefix);
315 break;
316 }
317 }
318 }*/
319 }
320
321 if (materialCount > 1 && (geom.getType() == PxGeometryType::eHEIGHTFIELD))
322 {
323 const PxHeightFieldGeometry& meshGeom = static_cast<const PxHeightFieldGeometry&>(geom);
324 const PxHeightField& mesh = *meshGeom.heightField;
325 if (mesh.getTriangleMaterialIndex(0) != 0xffff)
326 {
327 const PxU32 nbTris = mesh.getNbColumns()*mesh.getNbRows() * 2;
328 for (PxU32 i = 0; i < nbTris; i++)
329 {
330 const PxMaterialTableIndex meshMaterialIndex = mesh.getTriangleMaterialIndex(i);
331 if (meshMaterialIndex != PxHeightFieldMaterial::eHOLE && meshMaterialIndex >= materialCount)
332 {
333 PxGetFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__,
334 "%s: PxHeightField material indices reference more materials than provided!", errorMsgPrefix);
335 break;
336 }
337 }
338 }
339 }
340
341 return true;
342}
343
344}
345
346#endif
Definition base.h:1940
Definition NpBase.h:167
Definition NpPhysics.h:90
Definition NpMaterialManager.h:40
Definition NpScene.h:130
Definition NpShape.h:44
virtual void setSimulationFilterData(const PxFilterData &data) PX_OVERRIDE
Sets the user definable collision filter data.
Definition NpShape.cpp:358
virtual PxFilterData getQueryFilterData() const PX_OVERRIDE
Retrieves the shape's Query filter data.
Definition NpShape.cpp:393
virtual void setLocalPose(const PxTransform &pose) PX_OVERRIDE
Sets the pose of the shape in actor space, i.e. relative to the actors to which they are attached.
Definition NpShape.cpp:331
virtual PxU32 getReferenceCount() const PX_OVERRIDE
Returns the reference count of the object.
Definition NpShape.cpp:205
virtual void setDensityForFluid(PxReal) PX_OVERRIDE
Sets the density used to interact with fluids.
Definition NpShape.cpp:600
virtual PxReal getMinTorsionalPatchRadius() const PX_OVERRIDE
Gets minimum torsional patch radius.
Definition NpShape.cpp:671
virtual void setRestOffset(PxReal) PX_OVERRIDE
Sets the rest offset.
Definition NpShape.cpp:577
virtual void setTorsionalPatchRadius(PxReal) PX_OVERRIDE
Sets torsional patch radius.
Definition NpShape.cpp:622
virtual void setContactOffset(PxReal) PX_OVERRIDE
Sets the contact offset.
Definition NpShape.cpp:554
virtual void setFlag(PxShapeFlag::Enum flag, bool value) PX_OVERRIDE
Sets shape flags.
Definition NpShape.cpp:755
virtual PxU32 getMaterials(PxMaterial **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const PX_OVERRIDE
Retrieve all the material pointers associated with the shape.
Definition NpShape.cpp:482
virtual PxU16 getNbMaterials() const PX_OVERRIDE
Returns the number of materials assigned to the shape.
Definition NpShape.cpp:476
virtual PxReal getTorsionalPatchRadius() const PX_OVERRIDE
Gets torsional patch radius.
Definition NpShape.cpp:644
virtual void setMaterials(PxMaterial *const *materials, PxU16 materialCount) PX_OVERRIDE
Assigns material(s) to the shape. Will remove existing materials from the shape.
Definition NpShape.cpp:441
virtual void setSoftBodyMaterials(PxFEMSoftBodyMaterial *const *materials, PxU16 materialCount) PX_OVERRIDE
Assigns FEM soft body material(s) to the shape. Will remove existing materials from the shape.
Definition NpShape.cpp:447
virtual void setQueryFilterData(const PxFilterData &data) PX_OVERRIDE
Sets the user definable query filter data.
Definition NpShape.cpp:379
virtual PxReal getDensityForFluid() const PX_OVERRIDE
Retrieves the density used to interact with fluids.
Definition NpShape.cpp:616
virtual void setGeometry(const PxGeometry &) PX_OVERRIDE
Adjust the geometry of the shape.
Definition NpShape.cpp:263
virtual PxRigidActor * getActor() const PX_OVERRIDE
Retrieves the actor which this shape is associated with.
Definition NpShape.cpp:325
virtual void setFlags(PxShapeFlags inFlags) PX_OVERRIDE
Sets shape flags.
Definition NpShape.cpp:773
virtual PxReal getContactOffset() const PX_OVERRIDE
Retrieves the contact offset.
Definition NpShape.cpp:571
virtual PxShapeFlags getFlags() const PX_OVERRIDE
Retrieves shape flags.
Definition NpShape.cpp:788
virtual const PxGeometry & getGeometry() const PX_OVERRIDE
Retrieve a reference to the shape's geometry.
Definition NpShape.cpp:319
virtual bool isExclusive() const PX_OVERRIDE
Returns true if the shape is exclusive to an actor.
Definition NpShape.cpp:794
virtual void release() PX_OVERRIDE
call to release from actor
Definition NpShape.cpp:215
virtual PxTransform getLocalPose() const PX_OVERRIDE
Retrieves the pose of the shape in actor space, i.e. relative to the actor they are owned by.
Definition NpShape.cpp:350
virtual PxBaseMaterial * getMaterialFromInternalFaceIndex(PxU32 faceIndex) const PX_OVERRIDE
Retrieve material from given triangle index.
Definition NpShape.cpp:507
virtual void setClothMaterials(PxFEMClothMaterial *const *materials, PxU16 materialCount) PX_OVERRIDE
Assigns FEM cloth material(s) to the shape. Will remove existing materials from the shape.
Definition NpShape.cpp:463
virtual PxU32 getSoftBodyMaterials(PxFEMSoftBodyMaterial **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const PX_OVERRIDE
Retrieve all the FEM soft body material pointers associated with the shape.
Definition NpShape.cpp:488
virtual PxFilterData getSimulationFilterData() const PX_OVERRIDE
Retrieves the shape's collision filter data.
Definition NpShape.cpp:373
virtual PxReal getRestOffset() const PX_OVERRIDE
Retrieves the rest offset.
Definition NpShape.cpp:594
virtual PxU32 getClothMaterials(PxFEMClothMaterial **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const PX_OVERRIDE
Retrieve all the FEM cloth material pointers associated with the shape.
Definition NpShape.cpp:501
virtual void setName(const char *debugName) PX_OVERRIDE
Sets a name string for the object that can be retrieved with getName().
Definition NpShape.cpp:830
virtual void setMinTorsionalPatchRadius(PxReal) PX_OVERRIDE
Sets minimum torsional patch radius.
Definition NpShape.cpp:650
virtual void acquireReference() PX_OVERRIDE
Acquires a counted reference to this object.
Definition NpShape.cpp:210
virtual const char * getName() const PX_OVERRIDE
retrieves the name string set with setName().
Definition NpShape.cpp:840
PxActor is the base class for the main simulation objects in the physics SDK.
Definition PxActor.h:201
Base material class.
Definition PxBaseMaterial.h:49
Binary deserialization context class.
Definition PxSerialFramework.h:174
Material class to represent a set of FEM material properties.
Definition PxFEMClothMaterial.h:48
Material class to represent a set of softbody FEM material properties.
Definition PxFEMSoftBodyMaterial.h:49
A geometry object.
Definition PxGeometry.h:79
PX_CUDA_CALLABLE PX_FORCE_INLINE PxGeometryType::Enum getType() const
Returns the type of the geometry.
Definition PxGeometry.h:85
Material class to represent a set of surface properties.
Definition PxMaterial.h:149
Output stream class for I/O.
Definition PxIO.h:114
Callback class used to process PxBase objects.
Definition PxSerialFramework.h:81
Base class for ref-counted objects.
Definition PxBase.h:200
PxRigidActor represents a base class shared between dynamic and static rigid bodies in the physics SD...
Definition PxRigidActor.h:53
Binary serialization context class.
Definition PxSerialFramework.h:99
Abstract class for collision shapes.
Definition PxShape.h:146
class representing a rigid euclidean transform as a quaternion and a vector
Definition PxTransform.h:49
Definition ScRigidCore.h:61
Definition ScShapeCore.h:46
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
#define PX_OVERRIDE
Definition PxPreprocessor.h:375
PX_C_EXPORT PX_FOUNDATION_API physx::PxFoundation &PX_CALL_CONV PxGetFoundation()
Retrieves the Foundation SDK after it has been created.
Definition FdFoundation.cpp:279
#define PX_INLINE
Definition PxPreprocessor.h:320
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
PX_CUDA_CALLABLE PX_FORCE_INLINE T PxMin(T a, T b)
The return value is the lesser of the two specified values.
Definition PxMath.h:88
Definition CmPtrTable.h:72
@ eINVALID_PARAMETER
method called with invalid parameter(s)
Definition PxErrors.h:62
@ eDEBUG_WARNING
a warning message for the user to help with debugging
Definition PxErrors.h:59
PxFilterData is user-definable data which gets passed into the collision filtering shader and/or call...
Definition PxFiltering.h:365
Enum
Definition PxGeometry.h:52
@ eHOLE
A material indicating that the triangle should be treated as a hole in the mesh.
Definition PxHeightFieldSample.h:51
Enum
Definition PxShape.h:70