RavEngine
Loading...
Searching...
No Matches
physx::Sc::ShapeInteraction Class Reference
Inheritance diagram for physx::Sc::ShapeInteraction:
[legend]
Collaboration diagram for physx::Sc::ShapeInteraction:
[legend]

Public Types

enum  SiFlag {
  PAIR_FLAGS_MASK = (PxPairFlag::eNEXT_FREE - 1) , NEXT_FREE = ((PAIR_FLAGS_MASK << 1) & ~PAIR_FLAGS_MASK) , HAS_TOUCH = (NEXT_FREE << 0) , HAS_NO_TOUCH = (NEXT_FREE << 1) ,
  TOUCH_KNOWN = (HAS_TOUCH | HAS_NO_TOUCH) , CONTACTS_COLLECT_POINTS = (NEXT_FREE << 2) , CONTACTS_RESPONSE_DISABLED = (NEXT_FREE << 3) , CONTACT_FORCE_THRESHOLD_PAIRS = PxU32(PxPairFlag::eNOTIFY_THRESHOLD_FORCE_FOUND) | PxU32(PxPairFlag::eNOTIFY_THRESHOLD_FORCE_PERSISTS) | PxU32(PxPairFlag::eNOTIFY_THRESHOLD_FORCE_LOST) ,
  CONTACT_REPORT_EVENTS , CONTACT_REPORT_EXTRA_DATA = PxU32(PxPairFlag::ePRE_SOLVER_VELOCITY) | PxU32(PxPairFlag::ePOST_SOLVER_VELOCITY) | PxU32(PxPairFlag::eCONTACT_EVENT_POSE) , FORCE_THRESHOLD_EXCEEDED_NOW = (NEXT_FREE << 4) , FORCE_THRESHOLD_EXCEEDED_BEFORE = (NEXT_FREE << 5) ,
  FORCE_THRESHOLD_EXCEEDED_FLAGS = FORCE_THRESHOLD_EXCEEDED_NOW | FORCE_THRESHOLD_EXCEEDED_BEFORE , IS_IN_PERSISTENT_EVENT_LIST = (NEXT_FREE << 6) , WAS_IN_PERSISTENT_EVENT_LIST = (NEXT_FREE << 7) , IN_PERSISTENT_EVENT_LIST = IS_IN_PERSISTENT_EVENT_LIST | WAS_IN_PERSISTENT_EVENT_LIST ,
  IS_IN_FORCE_THRESHOLD_EVENT_LIST = (NEXT_FREE << 8) , IS_IN_CONTACT_EVENT_LIST = IS_IN_PERSISTENT_EVENT_LIST | IS_IN_FORCE_THRESHOLD_EVENT_LIST , LL_MANAGER_RECREATE_EVENT
}
 

Public Member Functions

 ShapeInteraction (ShapeSimBase &s1, ShapeSimBase &s2, PxPairFlags pairFlags, PxsContactManager *contactManager)
 
void processUserNotification (PxU32 contactEvent, PxU16 infoFlags, bool touchLost, const PxU32 ccdPass, const bool useCurrentTransform, PxsContactManagerOutputIterator &outputs)
 
void processUserNotificationSync ()
 
void processUserNotificationAsync (PxU32 contactEvent, PxU16 infoFlags, bool touchLost, const PxU32 ccdPass, const bool useCurrentTransform, PxsContactManagerOutputIterator &outputs, ContactReportAllocationManager *alloc=NULL)
 
void visualize (PxRenderOutput &, PxsContactManagerOutputIterator &, float scale, float param_contactForce, float param_contactNormal, float param_contactError, float param_contactPoint)
 
PxU32 getContactPointData (const void *&contactPatches, const void *&contactPoints, PxU32 &contactDataSize, PxU32 &contactPointCount, PxU32 &patchCount, const PxReal *&impulses, PxU32 startOffset, PxsContactManagerOutputIterator &outputs)
 
bool managerLostTouch (const PxU32 ccdPass, bool adjustCounters, PxsContactManagerOutputIterator &outputs)
 
void managerNewTouch (const PxU32 ccdPass, bool adjustCounters, PxsContactManagerOutputIterator &outputs)
 
PX_FORCE_INLINE void adjustCountersOnLostTouch ()
 
PX_FORCE_INLINE void adjustCountersOnNewTouch ()
 
PX_FORCE_INLINE void sendCCDRetouch (const PxU32 ccdPass, PxsContactManagerOutputIterator &outputs)
 
void setContactReportPostSolverVelocity (ContactStreamManager &cs)
 
PX_FORCE_INLINE void sendLostTouchReport (bool shapeVolumeRemoved, const PxU32 ccdPass, PxsContactManagerOutputIterator &ouptuts)
 
void resetManagerCachedState () const
 
PX_FORCE_INLINE ActorPair * getActorPair () const
 
PX_FORCE_INLINE void setActorPair (ActorPair &aPair)
 
PX_FORCE_INLINE void clearActorPair ()
 
PX_FORCE_INLINE ActorPairReport & getActorPairReport () const
 
PX_INLINE PxIntBool isReportPair () const
 
PX_INLINE PxIntBool hasTouch () const
 
PX_INLINE PxIntBool hasCCDTouch () const
 
PX_INLINE void swapAndClearForceThresholdExceeded ()
 
PX_FORCE_INLINE void raiseFlag (SiFlag flag)
 
PX_FORCE_INLINE PxIntBool readFlag (SiFlag flag) const
 
PX_FORCE_INLINE PxU32 getPairFlags () const
 
PX_FORCE_INLINE void removeFromReportPairList ()
 
void onShapeChangeWhileSleeping (bool shapeOfDynamicChanged)
 
PX_FORCE_INLINE PxIntBool hasKnownTouchState () const
 
bool onActivate_ (void *data)
 
bool onDeactivate_ ()
 
void updateState (const PxU8 externalDirtyFlags)
 
const PxsContactManager * getContactManager () const
 
void clearIslandGenData ()
 
PX_FORCE_INLINE PxU32 getEdgeIndex () const
 
PX_FORCE_INLINE Sc::ShapeSimBase & getShape0 () const
 
PX_FORCE_INLINE Sc::ShapeSimBase & getShape1 () const
 
- Public Member Functions inherited from physx::Sc::ElementSimInteraction
PX_FORCE_INLINE ElementSim & getElement0 () const
 
PX_FORCE_INLINE ElementSim & getElement1 () const
 
PX_FORCE_INLINE void setFilterPairIndex (PxU32 filterPairIndex)
 
PX_FORCE_INLINE PxU32 getFilterPairIndex () const
 
- Public Member Functions inherited from physx::Sc::Interaction
PX_FORCE_INLINE bool registerInActors (void *data=NULL)
 
PX_FORCE_INLINE void unregisterFromActors ()
 
PX_FORCE_INLINE ActorSim & getActorSim0 () const
 
PX_FORCE_INLINE ActorSim & getActorSim1 () const
 
PX_FORCE_INLINE Scene & getScene () const
 
PX_FORCE_INLINE InteractionType::Enum getType () const
 
PX_FORCE_INLINE PxU8 readInteractionFlag (PxU8 flag) const
 
PX_FORCE_INLINE void raiseInteractionFlag (InteractionFlag::Enum flag)
 
PX_FORCE_INLINE void clearInteractionFlag (InteractionFlag::Enum flag)
 
PX_FORCE_INLINE void setDirty (PxU32 dirtyFlags)
 Mark the interaction as dirty. This will put the interaction into a list that is processed once per simulation step.
 
void setClean (bool removeFromList)
 Clear all flags that mark the interaction as dirty and optionally remove the interaction from the list of dirty interactions.
 
PX_FORCE_INLINE PxIntBool needsRefiltering () const
 
PX_FORCE_INLINE PxIntBool isElementInteraction () const
 
PX_FORCE_INLINE void setInteractionId (PxU32 id)
 
PX_FORCE_INLINE PxU32 getInteractionId () const
 
PX_FORCE_INLINE bool isRegistered () const
 
PX_FORCE_INLINE void setActorId (ActorSim *actor, PxU32 id)
 
PX_FORCE_INLINE PxU32 getActorId (const ActorSim *actor) const
 
PX_FORCE_INLINE PxU8 getDirtyFlags () const
 
- Public Member Functions inherited from physx::PxUserAllocated
PX_INLINE void * operator new (size_t, void *address)
 
PX_INLINE void operator delete (void *, void *)
 
template<typename Alloc >
PX_INLINE void * operator new (size_t size, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void * operator new (size_t size, size_t, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void * operator new[] (size_t size, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void * operator new[] (size_t size, size_t, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void operator delete (void *ptr, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void operator delete[] (void *ptr, Alloc alloc, const char *fileName, int line)
 
PX_INLINE void operator delete (void *ptr)
 
PX_INLINE void operator delete[] (void *ptr)
 

Friends

class NPhaseCore
 
class Sc::Scene
 

Additional Inherited Members

- Protected Member Functions inherited from physx::Sc::ElementSimInteraction
PX_INLINE ElementSimInteraction (ElementSim &element0, ElementSim &element1, InteractionType::Enum type, PxU8 flags)
 
ElementSimInteraction & operator= (const ElementSimInteraction &)
 
- Protected Member Functions inherited from physx::Sc::Interaction
 Interaction (ActorSim &actor0, ActorSim &actor1, InteractionType::Enum interactionType, PxU8 flags)
 
- Protected Attributes inherited from physx::Sc::ElementSimInteraction
ElementSim & mElement0
 
ElementSim & mElement1
 
PxU32 mFilterPairIndex
 
PxU32 mFlags
 
- Protected Attributes inherited from physx::Sc::Interaction
const PxU8 mInteractionType
 
PxU8 mInteractionFlags
 
PxU8 mDirtyFlags
 
PxU8 mPadding8
 

Member Function Documentation

◆ processUserNotificationAsync()

void Sc::ShapeInteraction::processUserNotificationAsync ( PxU32  contactEvent,
PxU16  infoFlags,
bool  touchLost,
const PxU32  ccdPass,
const bool  useCurrentTransform,
PxsContactManagerOutputIterator &  outputs,
ContactReportAllocationManager *  alloc = NULL 
)

!! why is alignment important here? Looks almost like some refactor nonsense


The documentation for this class was generated from the following files: