30#ifndef BP_BROADPHASE_SAP_H
31#define BP_BROADPHASE_SAP_H
33#include "BpBroadPhase.h"
34#include "BpBroadPhaseSapAux.h"
40class PxcScratchAllocator;
67 virtual void runInternal();
69 virtual const char*
getName()
const {
return "BpBroadphaseSap.batchUpdate"; }
71 void set(
class BroadPhaseSap* sap,
const PxU32 axis) {mSap = sap; mAxis = axis;}
73 BroadPhasePair* getPairs()
const {
return mPairs;}
74 PxU32 getPairsSize()
const {
return mPairsSize;}
75 PxU32 getPairsCapacity()
const {
return mPairsCapacity;}
77 void setPairs(BroadPhasePair* pairs,
const PxU32 pairsCapacity) {mPairs = pairs; mPairsCapacity = pairsCapacity;}
79 void setNumPairs(
const PxU32 pairsSize) {mPairsSize=pairsSize;}
83 class BroadPhaseSap* mSap;
86 BroadPhasePair* mPairs;
105 friend class SapUpdateWorkTask;
106 friend class SapPostUpdateWorkTask;
108 BroadPhaseSap(
const PxU32 maxNbBroadPhaseOverlaps,
const PxU32 maxNbStaticShapes,
const PxU32 maxNbDynamicShapes, PxU64 contextID);
117 virtual const BroadPhasePair* getCreatedPairs(PxU32& nbCreatedPairs)
const PX_OVERRIDE { nbCreatedPairs = mCreatedPairsSize;
return mCreatedPairsArray; }
127 void resizeBuffers();
132 const BpHandle* mCreated;
134 const BpHandle* mRemoved;
136 const BpHandle* mUpdated;
139 const Bp::FilterGroup::Enum*mBoxGroups;
141 const PxReal* mContactDistance;
142 PxU32 mBoxesCapacity;
148 ValType* mEndPointValues[3];
149 BpHandle* mEndPointDatas[3];
152 BpHandle* mSortedUpdateElements;
158 PxU32 mBoxesSizePrev;
159 PxU32 mEndPointsCapacity;
162 PxU32 mDefaultPairsCapacity;
174 PxU32 mCreatedPairsSize;
175 PxU32 mCreatedPairsCapacity;
177 PxU32 mDeletedPairsSize;
178 PxU32 mDeletedPairsCapacity;
179 PxU32 mActualDeletedPairSize;
190 void batchUpdate(
const PxU32 Axis,
BroadPhasePair*& pairs, PxU32& pairsSize, PxU32& pairsCapacity);
192 void batchUpdateFewUpdates(
const PxU32 Axis,
BroadPhasePair*& pairs, PxU32& pairsSize, PxU32& pairsCapacity);
194 void ComputeSortedLists(
195 BpHandle*
PX_RESTRICT newBoxIndicesSorted, PxU32& newBoxIndicesCount, BpHandle*
PX_RESTRICT oldBoxIndicesSorted, PxU32& oldBoxIndicesCount,
196 bool& allNewBoxesStatics,
bool& allOldBoxesStatics);
200 const PxU64 mContextID;
202 bool isSelfOrdered()
const;
203 bool isSelfConsistent()
const;
Definition BpFiltering.h:119
Definition BpBroadPhaseSap.h:54
virtual const char * getName() const
Return a user-provided task name for profiling purposes.
Definition BpBroadPhaseSap.h:69
Definition BpBroadPhaseSap.h:100
virtual void freeBuffers() PX_OVERRIDE
After the broadphase has completed its update() function and the created/deleted pairs have been quer...
Definition BpBroadPhaseSap.cpp:257
virtual void release() PX_OVERRIDE
Shutdown of the broadphase.
Definition BpBroadPhaseSap.cpp:211
virtual void update(PxcScratchAllocator *scratchAllocator, const BroadPhaseUpdateData &updateData, physx::PxBaseTask *continuation) PX_OVERRIDE
Updates the broadphase and computes the lists of created/deleted pairs.
Definition BpBroadPhaseSap.cpp:488
virtual void shiftOrigin(const PxVec3 &shift, const PxBounds3 *boundsArray, const PxReal *contactDistances) PX_OVERRIDE
Adjust internal structures after all bounds have been adjusted due to a scene origin shift.
Definition BpBroadPhaseSap.cpp:330
virtual void fetchBroadPhaseResults() PX_OVERRIDE
Fetch the results of any asynchronous broad phase work.
Definition BpBroadPhaseSap.h:116
virtual void preBroadPhase(const Bp::BroadPhaseUpdateData &) PX_OVERRIDE
prepare broad phase data.
Definition BpBroadPhaseSap.h:115
virtual const BroadPhasePair * getDeletedPairs(PxU32 &nbDeletedPairs) const PX_OVERRIDE
Get deleted pairs.
Definition BpBroadPhaseSap.h:118
Definition BpBroadPhaseUpdate.h:47
Definition BpBroadPhase.h:99
Definition BpBroadPhaseSapAux.h:94
Definition BpBroadPhaseSapAux.h:104
Base class of all task types.
Definition PxTask.h:45
Class representing 3D range or axis aligned bounding box.
Definition PxBounds3.h:58
3 Element vector class.
Definition PxVec3.h:50
Definition PxcScratchAllocator.h:42
#define PX_RESTRICT
Definition PxPreprocessor.h:355
#define PX_OVERRIDE
Definition PxPreprocessor.h:375
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Definition BpBroadPhaseSap.h:93
Definition BpBroadPhase.h:82
Enum
Definition PxBroadPhase.h:79
@ eSAP
3-axes sweep-and-prune
Definition PxBroadPhase.h:80