132 virtual void addShape(
PxsShapeSim* shapeSim,
const PxU32 index) = 0;
133 virtual void reinsertShape(
PxsShapeSim* shapeSim,
const PxU32 index) = 0;
135 virtual void removeShape(
const PxU32 index) = 0;
138 virtual void addDynamics(
PxsRigidBody** rigidBody,
const PxU32* nodeIndex, PxU32 nbToProcess) = 0;
141 virtual void releaseDeferredArticulationIds() = 0;
143#if PX_SUPPORT_GPU_PHYSX
145 virtual void releaseSoftBody(
Dy::SoftBody* softBody) = 0;
146 virtual void releaseDeferredSoftBodyIds() = 0;
149 virtual void activateSoftbodySelfCollision(
Dy::SoftBody*) = 0;
150 virtual void deactivateSoftbodySelfCollision(
Dy::SoftBody*) = 0;
154 PxU32 particleId, PxU32 userBufferId, PxU32 tetId) = 0;
155 virtual void removeParticleFilter(
Dy::SoftBody* softBodySystem,
156 const Dy::ParticleSystem* particleSystem, PxU32 particleId, PxU32 userBufferId, PxU32 tetId) = 0;
159 PxU32 particleId, PxU32 userBufferId, PxU32 tetId,
const PxVec4& barycentrics,
const bool isActive) = 0;
160 virtual void removeParticleAttachment(
Dy::SoftBody* softBody, PxU32 handle) = 0;
163 const PxNodeIndex& rigidNodeIndex, PxU32 vertIndex) = 0;
164 virtual void removeRigidFilter(
Dy::SoftBody* softBodySystem,
165 const PxNodeIndex& rigidNodeIndex, PxU32 vertIndex) = 0;
170 virtual void removeRigidAttachment(
Dy::SoftBody* softBody, PxU32 handle) = 0;
172 virtual void addTetRigidFilter(
Dy::SoftBody* softBodySystem,
173 const PxNodeIndex& rigidNodeIndex, PxU32 tetId) = 0;
175 virtual PxU32 addTetRigidAttachment(
Dy::SoftBody* softBodySystem,
178 const bool isActive) = 0;
180 virtual void removeTetRigidFilter(
Dy::SoftBody* softBody,
181 const PxNodeIndex& rigidNodeIndex, PxU32 tetId) = 0;
187 virtual void addSoftBodyFilters(
Dy::SoftBody* softBody0,
Dy::SoftBody* softBody1, PxU32* tetIndices0, PxU32* tetIndices1,
188 PxU32 tetIndicesSize) = 0;
189 virtual void removeSoftBodyFilters(
Dy::SoftBody* softBody0,
Dy::SoftBody* softBody1, PxU32* tetIndices0, PxU32* tetIndices1,
190 PxU32 tetIndicesSize) = 0;
194 virtual void removeSoftBodyAttachment(
Dy::SoftBody* softBody0, PxU32 handle) = 0;
203 const bool isActive) = 0;
204 virtual void removeClothAttachment(
Dy::SoftBody* softBody,PxU32 handle) = 0;
207 virtual void releaseFEMCloth(
Dy::FEMCloth* femCloth) = 0;
208 virtual void releaseDeferredFEMClothIds() = 0;
210 virtual void deactivateCloth(
Dy::FEMCloth* femCloth) = 0;
214 const PxNodeIndex& rigidNodeIndex, PxU32 vertId) = 0;
217 const PxNodeIndex& rigidNodeIndex, PxU32 vertId) = 0;
222 virtual void removeRigidAttachment(
Dy::FEMCloth* cloth, PxU32 handle) = 0;
225 const PxNodeIndex& rigidNodeIndex, PxU32 triIdx) = 0;
228 const PxNodeIndex& rigidNodeIndex, PxU32 triIdx) = 0;
230 virtual PxU32 addTriRigidAttachment(
Dy::FEMCloth* cloth,
233 const bool isActive) = 0;
235 virtual void removeTriRigidAttachment(
Dy::FEMCloth* cloth, PxU32 handle) = 0;
241 const PxVec4& triBarycentric0,
const PxVec4& triBarycentric1,
const bool addToActive) = 0;
243 virtual void removeTriClothAttachment(
Dy::FEMCloth* cloth0, PxU32 handle) = 0;
248 virtual void releaseDeferredParticleSystemIds() = 0;
252 virtual void releaseDeferredHairSystemIds() = 0;
258 virtual void flush() = 0;
261 virtual void updateJoint(
const PxU32 edgeIndex,
Dy::Constraint* constraint) = 0;
262 virtual void updateBodies(
PxsRigidBody** rigidBodies, PxU32* nodeIndices,
const PxU32 nbBodies) = 0;
263 virtual void updateBodies(
PxBaseTask* continuation) = 0;
264 virtual void updateShapes(
PxBaseTask* continuation) = 0;
265 virtual void preIntegrateAndUpdateBound(
PxBaseTask* continuation,
const PxVec3 gravity,
const PxReal dt) = 0;
266 virtual void updateParticleSystemsAndSoftBodies() = 0;
267 virtual void sortContacts() = 0;
275 virtual void mergeChangedAABBMgHandle(
const PxU32 maxAABBMgHandles,
const bool suppressedReadback) = 0;
278 virtual PxU32* getActiveBodies() = 0;
279 virtual PxU32* getDeactiveBodies() = 0;
280 virtual void** getRigidBodies() = 0;
281 virtual PxU32 getNbBodies() = 0;
283 virtual PxU32* getUnfrozenShapes() = 0;
284 virtual PxU32* getFrozenShapes() = 0;
286 virtual PxU32 getNbFrozenShapes() = 0;
287 virtual PxU32 getNbUnfrozenShapes() = 0;
288 virtual PxU32 getNbShapes() = 0;
290 virtual void clear() = 0;
292 virtual void reserve(
const PxU32 nbBodies) = 0;
294 virtual PxU32 getArticulationRemapIndex(
const PxU32 nodeIndex) = 0;
297 virtual void copyArticulationData(
void* data,
void* index,
PxArticulationGpuDataType::Enum dataType,
const PxU32 nbCopyArticulations,
void* copyEvent) = 0;
299 void* waitEvent,
void* signalEvent) = 0;
303 virtual void copySoftBodyData(
void** data,
void* dataSizes,
void* softBodyIndices,
PxSoftBodyDataFlag::Enum flag,
const PxU32 nbCopySoftBodies,
const PxU32 maxSize,
void* copyEvent) = 0;
304 virtual void applySoftBodyData(
void** data,
void* dataSizes,
void* softBodyIndices,
PxSoftBodyDataFlag::Enum flag,
const PxU32 nbUpdatedSoftBodies,
const PxU32 maxSize,
void* applyEvent) = 0;
305 virtual void copyContactData(
Dy::Context* dyContext,
void* data,
const PxU32 maxContactPairs,
void* numContactPairs,
void* copyEvent) = 0;
307 virtual void applyActorData(
void* data,
PxGpuActorPair* index, PxActorCacheFlag::Enum flag,
const PxU32 nbUpdatedActors,
void* waitEvent,
void* signalEvent) = 0;
309 virtual void syncParticleData() = 0;
311 virtual void updateBoundsAndShapes(
Bp::AABBManagerBase& aabbManager,
const bool useGpuBp,
const bool useDirectApi) = 0;
313 virtual void computeDenseJacobians(
const PxIndexDataPair* indices, PxU32 nbIndices,
void* computeEvent) = 0;
314 virtual void computeGeneralizedMassMatrices(
const PxIndexDataPair* indices, PxU32 nbIndices,
void* computeEvent) = 0;
315 virtual void computeGeneralizedGravityForces(
const PxIndexDataPair* indices, PxU32 nbIndices,
const PxVec3& gravity,
void* computeEvent) = 0;
316 virtual void computeCoriolisAndCentrifugalForces(
const PxIndexDataPair* indices, PxU32 nbIndices,
void* computeEvent) = 0;
319 virtual void flushInsertions() = 0;
321#if PX_SUPPORT_GPU_PHYSX
322 virtual PxU32 getNbDeactivatedFEMCloth()
const = 0;
323 virtual PxU32 getNbActivatedFEMCloth()
const = 0;
325 virtual Dy::FEMCloth** getDeactivatedFEMCloths()
const = 0;
326 virtual Dy::FEMCloth** getActivatedFEMCloths()
const = 0;
329 virtual PxU32 getNbDeactivatedSoftbodies()
const = 0;
330 virtual PxU32 getNbActivatedSoftbodies()
const = 0;
332 virtual const PxReal* getSoftBodyWakeCounters()
const = 0;
334 virtual Dy::SoftBody** getDeactivatedSoftbodies()
const = 0;
335 virtual Dy::SoftBody** getActivatedSoftbodies()
const = 0;
337 virtual bool hasFEMCloth()
const = 0;
338 virtual bool hasSoftBodies()
const = 0;
340 virtual PxU32 getNbDeactivatedHairSystems()
const = 0;
341 virtual PxU32 getNbActivatedHairSystems()
const = 0;
344 virtual bool hasHairSystems()
const = 0;
348 virtual void* getMPMDataPointer(
const Dy::ParticleSystem& psLL, PxMPMParticleDataFlag::Enum flags) = 0;
Definition SnippetSoftBody.h:36
State of a body used when interfacing with the GPU rigid body pipeline.
Definition PxActorData.h:76
A pair of particle buffer unique id and GPU particle system index.
Definition PxParticleSystemFlag.h:72