29#ifndef GU_CONTACTMETHODIMPL_H
30#define GU_CONTACTMETHODIMPL_H
32#include "foundation/PxAssert.h"
33#include "common/PxPhysXCommonConfig.h"
34#include "collision/PxCollisionDefs.h"
35#include "GuGeometryChecks.h"
41 class PxContactBuffer;
45 class PersistentContactManifold;
46 class MultiplePersistentContactManifold;
51 mContactDistance(contactDistance),
52 mMeshContactMargin(meshContactMargin),
53 mToleranceLength(toleranceLength) {}
55 PxReal mContactDistance;
56 PxReal mMeshContactMargin;
57 PxReal mToleranceLength;
63 IS_MULTI_MANIFOLD = (1<<1)
74 PX_ASSERT((
size_t(manifold) & 0xF) == 0);
81 PX_ASSERT((
size_t(manifold) & 0xF) == 0);
98 PX_ASSERT(isManifold());
99 PX_ASSERT(!isMultiManifold());
106 PX_ASSERT(isManifold());
107 PX_ASSERT(isMultiManifold());
116 checkType<Geom>(geom);
117 return static_cast<const Geom&
>(geom);
120#define GU_CONTACT_METHOD_ARGS \
121 const PxGeometry& shape0, \
122 const PxGeometry& shape1, \
123 const PxTransform& transform0, \
124 const PxTransform& transform1, \
125 const Gu::NarrowPhaseParams& params, \
127 PxContactBuffer& contactBuffer, \
128 PxRenderOutput* renderOutput
130#define GU_CONTACT_METHOD_ARGS_UNUSED \
133 const PxTransform&, \
134 const PxTransform&, \
135 const Gu::NarrowPhaseParams&, \
142 PX_PHYSX_COMMON_API
bool contactSphereSphere(GU_CONTACT_METHOD_ARGS);
143 PX_PHYSX_COMMON_API
bool contactSphereCapsule(GU_CONTACT_METHOD_ARGS);
144 PX_PHYSX_COMMON_API
bool contactSphereBox(GU_CONTACT_METHOD_ARGS);
145 PX_PHYSX_COMMON_API
bool contactCapsuleCapsule(GU_CONTACT_METHOD_ARGS);
146 PX_PHYSX_COMMON_API
bool contactCapsuleBox(GU_CONTACT_METHOD_ARGS);
147 PX_PHYSX_COMMON_API
bool contactCapsuleConvex(GU_CONTACT_METHOD_ARGS);
148 PX_PHYSX_COMMON_API
bool contactBoxBox(GU_CONTACT_METHOD_ARGS);
149 PX_PHYSX_COMMON_API
bool contactBoxConvex(GU_CONTACT_METHOD_ARGS);
150 PX_PHYSX_COMMON_API
bool contactConvexConvex(GU_CONTACT_METHOD_ARGS);
152 PX_PHYSX_COMMON_API
bool contactSphereMesh(GU_CONTACT_METHOD_ARGS);
153 PX_PHYSX_COMMON_API
bool contactCapsuleMesh(GU_CONTACT_METHOD_ARGS);
154 PX_PHYSX_COMMON_API
bool contactBoxMesh(GU_CONTACT_METHOD_ARGS);
155 PX_PHYSX_COMMON_API
bool contactConvexMesh(GU_CONTACT_METHOD_ARGS);
157 PX_PHYSX_COMMON_API
bool contactSphereHeightfield(GU_CONTACT_METHOD_ARGS);
158 PX_PHYSX_COMMON_API
bool contactCapsuleHeightfield(GU_CONTACT_METHOD_ARGS);
159 PX_PHYSX_COMMON_API
bool contactBoxHeightfield(GU_CONTACT_METHOD_ARGS);
160 PX_PHYSX_COMMON_API
bool contactConvexHeightfield(GU_CONTACT_METHOD_ARGS);
162 PX_PHYSX_COMMON_API
bool contactSpherePlane(GU_CONTACT_METHOD_ARGS);
163 PX_PHYSX_COMMON_API
bool contactPlaneBox(GU_CONTACT_METHOD_ARGS);
164 PX_PHYSX_COMMON_API
bool contactPlaneCapsule(GU_CONTACT_METHOD_ARGS);
165 PX_PHYSX_COMMON_API
bool contactPlaneConvex(GU_CONTACT_METHOD_ARGS);
167 PX_PHYSX_COMMON_API
bool contactCustomGeometryGeometry(GU_CONTACT_METHOD_ARGS);
168 PX_PHYSX_COMMON_API
bool contactGeometryCustomGeometry(GU_CONTACT_METHOD_ARGS);
170 PX_PHYSX_COMMON_API
bool pcmContactSphereMesh(GU_CONTACT_METHOD_ARGS);
171 PX_PHYSX_COMMON_API
bool pcmContactCapsuleMesh(GU_CONTACT_METHOD_ARGS);
172 PX_PHYSX_COMMON_API
bool pcmContactBoxMesh(GU_CONTACT_METHOD_ARGS);
173 PX_PHYSX_COMMON_API
bool pcmContactConvexMesh(GU_CONTACT_METHOD_ARGS);
175 PX_PHYSX_COMMON_API
bool pcmContactSphereHeightField(GU_CONTACT_METHOD_ARGS);
176 PX_PHYSX_COMMON_API
bool pcmContactCapsuleHeightField(GU_CONTACT_METHOD_ARGS);
177 PX_PHYSX_COMMON_API
bool pcmContactBoxHeightField(GU_CONTACT_METHOD_ARGS);
178 PX_PHYSX_COMMON_API
bool pcmContactConvexHeightField(GU_CONTACT_METHOD_ARGS);
180 PX_PHYSX_COMMON_API
bool pcmContactPlaneCapsule(GU_CONTACT_METHOD_ARGS);
181 PX_PHYSX_COMMON_API
bool pcmContactPlaneBox(GU_CONTACT_METHOD_ARGS);
182 PX_PHYSX_COMMON_API
bool pcmContactPlaneConvex(GU_CONTACT_METHOD_ARGS);
184 PX_PHYSX_COMMON_API
bool pcmContactSphereSphere(GU_CONTACT_METHOD_ARGS);
185 PX_PHYSX_COMMON_API
bool pcmContactSpherePlane(GU_CONTACT_METHOD_ARGS);
186 PX_PHYSX_COMMON_API
bool pcmContactSphereCapsule(GU_CONTACT_METHOD_ARGS);
187 PX_PHYSX_COMMON_API
bool pcmContactSphereBox(GU_CONTACT_METHOD_ARGS);
188 PX_PHYSX_COMMON_API
bool pcmContactSphereConvex(GU_CONTACT_METHOD_ARGS);
190 PX_PHYSX_COMMON_API
bool pcmContactCapsuleCapsule(GU_CONTACT_METHOD_ARGS);
191 PX_PHYSX_COMMON_API
bool pcmContactCapsuleBox(GU_CONTACT_METHOD_ARGS);
192 PX_PHYSX_COMMON_API
bool pcmContactCapsuleConvex(GU_CONTACT_METHOD_ARGS);
193 PX_PHYSX_COMMON_API
bool pcmContactBoxBox(GU_CONTACT_METHOD_ARGS);
194 PX_PHYSX_COMMON_API
bool pcmContactBoxConvex(GU_CONTACT_METHOD_ARGS);
195 PX_PHYSX_COMMON_API
bool pcmContactConvexConvex(GU_CONTACT_METHOD_ARGS);
197 PX_PHYSX_COMMON_API
bool pcmContactGeometryCustomGeometry(GU_CONTACT_METHOD_ARGS);
A geometry object.
Definition PxGeometry.h:79
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Definition GuContactMethodImpl.h:67
Definition GuContactMethodImpl.h:49
A structure to cache contact information produced by low-level contact generation functions.
Definition PxCollisionDefs.h:68
PxU8 * mCachedData
Cached data pointer. Allocated via PxCacheAllocator.
Definition PxCollisionDefs.h:69
PxU8 mManifoldFlags
Manifold flags used to identify the format the cached data is stored in.
Definition PxCollisionDefs.h:72