Tesseract
Motion Planning Environment
|
Supports collision between CompoundCollisionShapes and other collision shapes. More...
#include <tesseract_compound_collision_algorithm.h>
Classes | |
struct | CreateFunc |
struct | SwappedCreateFunc |
Public Member Functions | |
TesseractCompoundCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, bool isSwapped) | |
~TesseractCompoundCollisionAlgorithm () override | |
TesseractCompoundCollisionAlgorithm (const TesseractCompoundCollisionAlgorithm &)=default | |
TesseractCompoundCollisionAlgorithm & | operator= (const TesseractCompoundCollisionAlgorithm &)=default |
TesseractCompoundCollisionAlgorithm (TesseractCompoundCollisionAlgorithm &&)=default | |
TesseractCompoundCollisionAlgorithm & | operator= (TesseractCompoundCollisionAlgorithm &&)=default |
btCollisionAlgorithm * | getChildAlgorithm (int n) const |
void | processCollision (const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut) override |
btScalar | calculateTimeOfImpact (btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut) override |
void | getAllContactManifolds (btManifoldArray &manifoldArray) override |
Protected Member Functions | |
void | removeChildAlgorithms () |
void | preallocateChildAlgorithms (const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap) |
Protected Attributes | |
btAlignedObjectArray< btCollisionAlgorithm * > | m_childCollisionAlgorithms |
bool | m_isSwapped |
class btPersistentManifold * | m_sharedManifold |
bool | m_ownsManifold { false } |
int | m_compoundShapeRevision |
Private Attributes | |
btNodeStack | stack2 |
btManifoldArray | manifoldArray |
Supports collision between CompoundCollisionShapes and other collision shapes.
The original implementation would check all collision objects before exiting the bvh of the compound shape. The original code had a callback, but it only passed in the collision shape and no the collision object which is where the user data is located. This was modifed to check if collision is done for the contact test type FIRST during the internal broadphase of the compound shapes and exit early.
Note: This could be removed in the future but the callback need to be modifed to accept the collision object along with the collision shape. I don't believe this will be an issue since all of the other callback in Bullet accept both.
tesseract_collision::tesseract_collision_bullet::TesseractCompoundCollisionAlgorithm::TesseractCompoundCollisionAlgorithm | ( | const btCollisionAlgorithmConstructionInfo & | ci, |
const btCollisionObjectWrapper * | body0Wrap, | ||
const btCollisionObjectWrapper * | body1Wrap, | ||
bool | isSwapped | ||
) |
|
override |
|
default |
|
default |
|
override |
|
inlineoverride |
|
inline |
|
default |
|
default |
|
protected |
|
override |
btCompoundShape might have changed: /make sure the internal child collision algorithm caches are still valid
clear and update all
we need to refresh all contact manifolds note that we should actually recursively traverse all children, btCompoundShape can nested more then 1 level deep so we should add a 'refreshManifolds' in the btCollisionAlgorithm
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
private |
|
private |