|
Bullet Collision Detection & Physics Library
|
Go to the documentation of this file.
50 if (numOverlappingPairs)
54 for (
int i=0;i<numOverlappingPairs;i++)
60 if (((colObj0) && ((colObj0)->mergesSimulationIslands())) &&
61 ((colObj1) && ((colObj1)->mergesSimulationIslands())))
65 (colObj1)->getIslandTag());
72 #ifdef STATIC_SIMULATION_ISLAND_OPTIMIZATION
126 #else //STATIC_SIMULATION_ISLAND_OPTIMIZATION
177 #endif //STATIC_SIMULATION_ISLAND_OPTIMIZATION
218 int endIslandIndex=1;
219 int startIslandIndex;
223 for ( startIslandIndex=0;startIslandIndex<numElem;startIslandIndex = endIslandIndex)
226 for (endIslandIndex = startIslandIndex+1;(endIslandIndex<numElem) && (
getUnionFind().
getElement(endIslandIndex).m_id == islandId);endIslandIndex++)
232 bool allSleeping =
true;
235 for (idx=startIslandIndex;idx<endIslandIndex;idx++)
263 for (idx=startIslandIndex;idx<endIslandIndex;idx++)
283 for (idx=startIslandIndex;idx<endIslandIndex;idx++)
318 for (i=0;i<maxNumManifolds ;i++)
360 int endIslandIndex=1;
361 int startIslandIndex;
370 callback->
processIsland(&collisionObjects[0],collisionObjects.
size(),manifold,maxNumManifolds, -1);
387 int startManifoldIndex = 0;
388 int endManifoldIndex = 1;
397 for ( startIslandIndex=0;startIslandIndex<numElem;startIslandIndex = endIslandIndex)
402 bool islandSleeping =
true;
404 for (endIslandIndex = startIslandIndex;(endIslandIndex<numElem) && (
getUnionFind().
getElement(endIslandIndex).m_id == islandId);endIslandIndex++)
410 islandSleeping =
false;
415 int numIslandManifolds = 0;
418 if (startManifoldIndex<numManifolds)
421 if (curIslandId == islandId)
425 for (endManifoldIndex = startManifoldIndex+1;(endManifoldIndex<numManifolds) && (islandId ==
getIslandId(
m_islandmanifold[endManifoldIndex]));endManifoldIndex++)
430 numIslandManifolds = endManifoldIndex-startManifoldIndex;
441 if (numIslandManifolds)
443 startManifoldIndex = endManifoldIndex;
static void getElement(int arrayLen, const char *cur, const char *old, char *oldPtr, char *curData)
btCollisionObject can be used to manage collision detection objects.
virtual void storeIslandActivationState(btCollisionWorld *world)
#define DISABLE_DEACTIVATION
void findUnions(btDispatcher *dispatcher, btCollisionWorld *colWorld)
virtual btPersistentManifold ** getInternalManifoldPointer()=0
void buildAndProcessIslands(btDispatcher *dispatcher, btCollisionWorld *collisionWorld, IslandCallback *callback)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
int getIslandId(const btPersistentManifold *lhs)
void quickSort(const L &CompareFunc)
void buildIslands(btDispatcher *dispatcher, btCollisionWorld *colWorld)
const btCollisionObject * getBody0() const
virtual int getNumManifolds() const =0
virtual int getNumOverlappingPairs() const =0
function object that routes calls to operator<
void sortIslands()
this is a special operation, destroying the content of btUnionFind.
int getActivationState() const
btElement & getElement(int index)
void setHitFraction(btScalar hitFraction)
bool isKinematicObject() const
bool isStaticOrKinematicObject() const
void activate(bool forceActivation=false) const
btAlignedObjectArray< btCollisionObject * > m_islandBodies
void resize(int newsize, const T &fillData=T())
btAlignedObjectArray< btPersistentManifold * > m_islandmanifold
btBroadphaseProxy * m_pProxy1
btOverlappingPairCache * getPairCache()
void initUnionFind(int n)
The btOverlappingPairCache provides an interface for overlapping pair management (add,...
bool operator()(const btPersistentManifold *lhs, const btPersistentManifold *rhs) const
virtual btBroadphasePair * getOverlappingPairArrayPtr()=0
void setCompanionId(int id)
void setDeactivationTime(btScalar time)
virtual bool needsResponse(const btCollisionObject *body0, const btCollisionObject *body1)=0
int getNumElements() const
virtual void updateActivationState(btCollisionWorld *colWorld, btDispatcher *dispatcher)
btBroadphaseProxy * m_pProxy0
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
bool hasContactResponse() const
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
#define SIMD_FORCE_INLINE
virtual ~btSimulationIslandManager()
void setIslandTag(int tag)
btSimulationIslandManager()
#define WANTS_DEACTIVATION
virtual void processIsland(btCollisionObject **bodies, int numBodies, class btPersistentManifold **manifolds, int numManifolds, int islandId)=0
CollisionWorld is interface and container for the collision detection.
const btCollisionObject * getBody1() const
btCollisionObjectArray & getCollisionObjectArray()
btUnionFind & getUnionFind()
void push_back(const T &_Val)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
The btBroadphasePair class contains a pair of aabb-overlapping objects.
void setActivationState(int newState) const
int size() const
return the number of elements in the array
virtual btPersistentManifold * getManifoldByIndexInternal(int index)=0