All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
PxContactStreamIterator Struct Reference

A class to iterate over a compressed contact stream. This supports read-only access to the various contact formats. More...

#include <PxContact.h>

Collaboration diagram for PxContactStreamIterator:

Public Types

enum  StreamFormat { eSIMPLE_STREAM, eMODIFIABLE_STREAM, eCOMPRESSED_MODIFIABLE_STREAM }
 

Public Member Functions

PX_CUDA_CALLABLE PX_FORCE_INLINE PxContactStreamIterator (const PxU8 *contactPatches, const PxU8 *contactPoints, const PxU32 *contactFaceIndices, PxU32 nbPatches, PxU32 nbContacts)
 Constructor. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE bool hasNextPatch () const
 Returns whether there are more patches in this stream. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 getTotalContactCount () const
 Returns the total contact count. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 getTotalPatchCount () const
 
PX_CUDA_CALLABLE PX_INLINE void nextPatch ()
 Advances iterator to next contact patch. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE bool hasNextContact () const
 Returns if the current patch has more contacts. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE void nextContact ()
 Advances to the next contact in the patch. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3getContactNormal () const
 Gets the current contact's normal. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getInvMassScale0 () const
 Gets the inverse mass scale for body 0. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getInvMassScale1 () const
 Gets the inverse mass scale for body 1. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getInvInertiaScale0 () const
 Gets the inverse inertia scale for body 0. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getInvInertiaScale1 () const
 Gets the inverse inertia scale for body 1. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getMaxImpulse () const
 Gets the contact's max impulse. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3getTargetVel () const
 Gets the contact's target velocity. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3getContactPoint () const
 Gets the contact's contact point. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getSeparation () const
 Gets the contact's separation. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 getFaceIndex0 () const
 Gets the contact's face index for shape 0. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 getFaceIndex1 () const
 Gets the contact's face index for shape 1. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getStaticFriction () const
 Gets the contact's static friction coefficient. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getDynamicFriction () const
 Gets the contact's static dynamic coefficient. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal getRestitution () const
 Gets the contact's restitution coefficient. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 getMaterialFlags () const
 Gets the contact's material flags. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxU16 getMaterialIndex0 () const
 Gets the contact's material index for shape 0. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxU16 getMaterialIndex1 () const
 Gets the contact's material index for shape 1. More...
 
bool advanceToIndex (const PxU32 initialIndex)
 Advances the contact stream iterator to a specific contact index. More...
 

Public Attributes

PxVec3 zero
 Utility zero vector to optimize functions returning zero vectors when a certain flag isn't set. More...
 
const PxContactPatchpatch
 The patch headers. More...
 
const PxContactcontact
 The contacts. More...
 
const PxU32faceIndice
 The contact triangle face index. More...
 
PxU32 totalPatches
 The total number of patches in this contact stream. More...
 
PxU32 totalContacts
 The total number of contact points in this stream. More...
 
PxU32 nextContactIndex
 The current contact index. More...
 
PxU32 nextPatchIndex
 The current patch Index. More...
 
PxU32 contactPatchHeaderSize
 
PxU32 contactPointSize
 Contact point size. More...
 
StreamFormat mStreamFormat
 The stream format. More...
 
PxU32 forceNoResponse
 Indicates whether this stream is notify-only or not. More...
 
bool pointStepped
 
PxU32 hasFaceIndices
 

Private Member Functions

PX_CUDA_CALLABLE PX_FORCE_INLINE const PxContactPatchgetContactPatch () const
 Internal helper. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE const PxExtendedContactgetExtendedContact () const
 

Detailed Description

A class to iterate over a compressed contact stream. This supports read-only access to the various contact formats.

Member Enumeration Documentation

◆ StreamFormat

Enumerator
eSIMPLE_STREAM 
eMODIFIABLE_STREAM 
eCOMPRESSED_MODIFIABLE_STREAM 

Constructor & Destructor Documentation

◆ PxContactStreamIterator()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxContactStreamIterator::PxContactStreamIterator ( const PxU8 *  contactPatches,
const PxU8 *  contactPoints,
const PxU32 contactFaceIndices,
PxU32  nbPatches,
PxU32  nbContacts 
)
inline

Member Function Documentation

◆ advanceToIndex()

bool PxContactStreamIterator::advanceToIndex ( const PxU32  initialIndex)
inline

Advances the contact stream iterator to a specific contact index.

References contact, PxContactPatch::nbContacts, and PX_ASSERT.

◆ getContactNormal()

PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3& PxContactStreamIterator::getContactNormal ( ) const
inline

Gets the current contact's normal.

Returns
The current contact's normal.

Referenced by PxContactPair::extractContacts().

◆ getContactPatch()

PX_CUDA_CALLABLE PX_FORCE_INLINE const PxContactPatch& PxContactStreamIterator::getContactPatch ( ) const
inlineprivate

Internal helper.

◆ getContactPoint()

PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3& PxContactStreamIterator::getContactPoint ( ) const
inline

Gets the contact's contact point.

Returns
The contact's contact point.

References contact.

Referenced by PxContactPair::extractContacts().

◆ getDynamicFriction()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getDynamicFriction ( ) const
inline

Gets the contact's static dynamic coefficient.

Returns
The contact's static dynamic coefficient.

◆ getExtendedContact()

PX_CUDA_CALLABLE PX_FORCE_INLINE const PxExtendedContact& PxContactStreamIterator::getExtendedContact ( ) const
inlineprivate

References contact, and PX_ASSERT.

◆ getFaceIndex0()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 PxContactStreamIterator::getFaceIndex0 ( ) const
inline

Gets the contact's face index for shape 0.

Returns
The contact's face index for shape 0.

References PXC_CONTACT_NO_FACE_INDEX.

Referenced by PxContactPair::extractContacts().

◆ getFaceIndex1()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 PxContactStreamIterator::getFaceIndex1 ( ) const
inline

Gets the contact's face index for shape 1.

Returns
The contact's face index for shape 1.

Referenced by PxContactPair::extractContacts().

◆ getInvInertiaScale0()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getInvInertiaScale0 ( ) const
inline

Gets the inverse inertia scale for body 0.

Returns
The inverse inertia scale for body 0.

◆ getInvInertiaScale1()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getInvInertiaScale1 ( ) const
inline

Gets the inverse inertia scale for body 1.

Returns
The inverse inertia scale for body 1.

◆ getInvMassScale0()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getInvMassScale0 ( ) const
inline

Gets the inverse mass scale for body 0.

Returns
The inverse mass scale for body 0.

◆ getInvMassScale1()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getInvMassScale1 ( ) const
inline

Gets the inverse mass scale for body 1.

Returns
The inverse mass scale for body 1.

◆ getMaterialFlags()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 PxContactStreamIterator::getMaterialFlags ( ) const
inline

Gets the contact's material flags.

Returns
The contact's material flags.

◆ getMaterialIndex0()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxU16 PxContactStreamIterator::getMaterialIndex0 ( ) const
inline

Gets the contact's material index for shape 0.

Returns
The contact's material index for shape 0.

References materialIndex0.

◆ getMaterialIndex1()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxU16 PxContactStreamIterator::getMaterialIndex1 ( ) const
inline

Gets the contact's material index for shape 1.

Returns
The contact's material index for shape 1.

References materialIndex1.

◆ getMaxImpulse()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getMaxImpulse ( ) const
inline

Gets the contact's max impulse.

Returns
The contact's max impulse.

References PX_MAX_REAL.

◆ getRestitution()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getRestitution ( ) const
inline

Gets the contact's restitution coefficient.

Returns
The contact's restitution coefficient.

◆ getSeparation()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getSeparation ( ) const
inline

Gets the contact's separation.

Returns
The contact's separation.

Referenced by PxContactPair::extractContacts().

◆ getStaticFriction()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxContactStreamIterator::getStaticFriction ( ) const
inline

Gets the contact's static friction coefficient.

Returns
The contact's static friction coefficient.

◆ getTargetVel()

PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3& PxContactStreamIterator::getTargetVel ( ) const
inline

Gets the contact's target velocity.

Returns
The contact's target velocity.

◆ getTotalContactCount()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 PxContactStreamIterator::getTotalContactCount ( ) const
inline

Returns the total contact count.

Returns
Total contact count.

◆ getTotalPatchCount()

PX_CUDA_CALLABLE PX_FORCE_INLINE PxU32 PxContactStreamIterator::getTotalPatchCount ( ) const
inline

◆ hasNextContact()

PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxContactStreamIterator::hasNextContact ( ) const
inline

Returns if the current patch has more contacts.

Returns
If there are more contacts in the current patch.

References PxContactPatch::nbContacts.

Referenced by PxContactPair::extractContacts().

◆ hasNextPatch()

PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxContactStreamIterator::hasNextPatch ( ) const
inline

Returns whether there are more patches in this stream.

Returns
Whether there are more patches in this stream.

Referenced by PxContactPair::extractContacts().

◆ nextContact()

PX_CUDA_CALLABLE PX_FORCE_INLINE void PxContactStreamIterator::nextContact ( )
inline

Advances to the next contact in the patch.

References contact, nbContacts, and PX_ASSERT.

Referenced by PxContactPair::extractContacts().

◆ nextPatch()

PX_CUDA_CALLABLE PX_INLINE void PxContactStreamIterator::nextPatch ( )
inline

Advances iterator to next contact patch.

References contact, PxContactPatch::nbContacts, nbContacts, and PX_ASSERT.

Referenced by PxContactPair::extractContacts().

Member Data Documentation

◆ contact

const PxContact* PxContactStreamIterator::contact

The contacts.

◆ contactPatchHeaderSize

PxU32 PxContactStreamIterator::contactPatchHeaderSize

◆ contactPointSize

PxU32 PxContactStreamIterator::contactPointSize

Contact point size.

Note
This varies whether the patch has feature indices or is modifiable.

◆ faceIndice

const PxU32* PxContactStreamIterator::faceIndice

The contact triangle face index.

◆ forceNoResponse

PxU32 PxContactStreamIterator::forceNoResponse

Indicates whether this stream is notify-only or not.

◆ hasFaceIndices

PxU32 PxContactStreamIterator::hasFaceIndices

◆ mStreamFormat

StreamFormat PxContactStreamIterator::mStreamFormat

The stream format.

◆ nextContactIndex

PxU32 PxContactStreamIterator::nextContactIndex

The current contact index.

◆ nextPatchIndex

PxU32 PxContactStreamIterator::nextPatchIndex

The current patch Index.

◆ patch

const PxContactPatch* PxContactStreamIterator::patch

The patch headers.

◆ pointStepped

bool PxContactStreamIterator::pointStepped

◆ totalContacts

PxU32 PxContactStreamIterator::totalContacts

The total number of contact points in this stream.

◆ totalPatches

PxU32 PxContactStreamIterator::totalPatches

The total number of patches in this contact stream.

◆ zero

PxVec3 PxContactStreamIterator::zero

Utility zero vector to optimize functions returning zero vectors when a certain flag isn't set.

Note
This allows us to return by reference instead of having to return by value. Returning by value will go via memory (registers -> stack -> registers), which can cause performance issues on certain platforms.

The documentation for this struct was generated from the following file: