29#ifndef GU_PCM_CONTACT_GEN_H
30#define GU_PCM_CONTACT_GEN_H
33#include "GuConvexSupportTable.h"
34#include "GuPersistentContactManifold.h"
35#include "GuShapeConvex.h"
36#include "GuSeparatingAxes.h"
48 bool generateFullContactManifold(Gu::PolygonalData& polyData0, Gu::PolygonalData& polyData1, Gu::SupportLocal* map0, Gu::SupportLocal* map1, Gu::PersistentContact* manifoldContacts,
49 PxU32& numContacts,
const aos::FloatVArg contactDist,
const aos::Vec3VArg normal,
const aos::Vec3VArg closestA,
const aos::Vec3VArg closestB,
50 const PxReal toleranceA,
const PxReal toleranceB,
bool doOverlapTest, PxRenderOutput* renderOutput,
const PxReal toleranceLength);
53 bool generateFullContactManifold(
const Gu::CapsuleV& capsule, Gu::PolygonalData& polyData, Gu::SupportLocal* map,
const aos::PxMatTransformV& aToB, Gu::PersistentContact* manifoldContacts,
54 PxU32& numContacts,
const aos::FloatVArg contactDist, aos::Vec3V& normal,
const aos::Vec3VArg closest,
const PxReal tolerance,
bool doOverlapTest,
const PxReal toleranceScale);
57 bool generateCapsuleBoxFullContactManifold(
const Gu::CapsuleV& capsule, Gu::PolygonalData& polyData, Gu::SupportLocal* map,
const aos::PxMatTransformV& aToB, Gu::PersistentContact* manifoldContacts, PxU32& numContacts,
58 const aos::FloatVArg contactDist, aos::Vec3V& normal,
const aos::Vec3VArg closest,
const PxReal boxMargin,
const bool doOverlapTest,
const PxReal toeranceScale, PxRenderOutput* renderOutput);
62 bool addGJKEPAContacts(
const Gu::GjkConvex* relativeConvex,
const Gu::GjkConvex* localConvex,
const aos::PxMatTransformV& aToB, Gu::GjkStatus status,
63 Gu::PersistentContact* manifoldContacts,
const aos::FloatV replaceBreakingThreshold,
const aos::FloatV toleranceLength, GjkOutput& output,
64 Gu::PersistentContactManifold& manifold);
67 bool computeMTD(Gu::PolygonalData& polyData0, Gu::PolygonalData& polyData1, SupportLocal* map0, SupportLocal* map1, aos::FloatV& penDepth, aos::Vec3V& normal);
70 bool computeMTD(
const Gu::CapsuleV& capsule, Gu::PolygonalData& polyData, Gu::SupportLocal* map, aos::FloatV& penDepth, aos::Vec3V& normal);
72 void buildPartialHull(
const Gu::PolygonalData& polyData, SupportLocal* map, Gu::SeparatingAxes& validAxes,
const aos::Vec3VArg v,
const aos::Vec3VArg _dir);
75 bool generateSphereFullContactManifold(
const Gu::CapsuleV& capsule, Gu::PolygonalData& polyData, Gu::SupportLocal* map, Gu::PersistentContact* manifoldContacts, PxU32& numContacts,
76 const aos::FloatVArg contactDist, aos::Vec3V& normal,
const bool doOverlapTest);
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39