Blender V2.61 - r43446
Defines | Typedefs | Enumerations | Functions | Variables

btPersistentManifold.h File Reference

#include "LinearMath/btVector3.h"
#include "LinearMath/btTransform.h"
#include "btManifoldPoint.h"
#include "LinearMath/btAlignedAllocator.h"

Go to the source code of this file.

Defines

#define MANIFOLD_CACHE_SIZE   4
#define MAINTAIN_PERSISTENCY   1

Typedefs

typedef bool(* ContactDestroyedCallback )(void *userPersistentData)
typedef bool(* ContactProcessedCallback )(btManifoldPoint &cp, void *body0, void *body1)

Enumerations

enum  btContactManifoldTypes { MIN_CONTACT_MANIFOLD_TYPE = 1024, BT_PERSISTENT_MANIFOLD_TYPE }

Functions

 ATTRIBUTE_ALIGNED128 (class) btPersistentManifold

Variables

btScalar gContactBreakingThreshold
 maximum contact breaking and merging threshold
ContactDestroyedCallback gContactDestroyedCallback
ContactProcessedCallback gContactProcessedCallback

Define Documentation

#define MAINTAIN_PERSISTENCY   1
#define MANIFOLD_CACHE_SIZE   4

Definition at line 42 of file btPersistentManifold.h.

Referenced by ATTRIBUTE_ALIGNED128().


Typedef Documentation

typedef bool(* ContactDestroyedCallback)(void *userPersistentData)

Definition at line 30 of file btPersistentManifold.h.

typedef bool(* ContactProcessedCallback)(btManifoldPoint &cp, void *body0, void *body1)

Definition at line 31 of file btPersistentManifold.h.


Enumeration Type Documentation

Enumerator:
MIN_CONTACT_MANIFOLD_TYPE 
BT_PERSISTENT_MANIFOLD_TYPE 

Definition at line 36 of file btPersistentManifold.h.


Function Documentation

ATTRIBUTE_ALIGNED128 ( class  )

btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping in the broadphase. Those contact points are created by the collision narrow phase. The cache can be empty, or hold 1,2,3 or 4 points. Some collision algorithms (GJK) might only add one point at a time. updates/refreshes old contact points, and throw them away if necessary (distance becomes too large) reduces the cache to 4 points, when more then 4 points are added, using following rules: the contact point with deepest penetration is always kept, and it tries to maximuze the area covered by the points note that some pairs of objects might have more then one contact manifold.

this two body pointers can point to the physics rigidbody class. void* will allow any rigidbody class

sort cached points so most isolated points come first

Todo:
: get this margin from the current physics / collision environment

calculated new worldspace coordinates and depth, and reject points that exceed the collision margin

Definition at line 53 of file btPersistentManifold.h.

References BT_DECLARE_ALIGNED_ALLOCATOR, BT_PERSISTENT_MANIFOLD_TYPE, btAssert, btManifoldPoint::getLifeTime(), i, btManifoldPoint::m_appliedImpulse, btManifoldPoint::m_appliedImpulseLateral1, btManifoldPoint::m_appliedImpulseLateral2, btManifoldPoint::m_distance1, btManifoldPoint::m_lateralFrictionInitialized, btManifoldPoint::m_lifeTime, btManifoldPoint::m_userPersistentData, MANIFOLD_CACHE_SIZE, btManifoldPoint::mConstraintRow, and SIMD_FORCE_INLINE.


Variable Documentation

maximum contact breaking and merging threshold

Definition at line 21 of file btPersistentManifold.cpp.

Definition at line 22 of file btPersistentManifold.cpp.

Definition at line 23 of file btPersistentManifold.cpp.