Supports collision between CompoundCollisionShapes and other collision shapes. More...
#include <tesseract_compound_collision_algorithm.h>
Classes | |
struct | CreateFunc |
struct | SwappedCreateFunc |
Public Member Functions | |
btScalar | calculateTimeOfImpact (btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut) override |
void | getAllContactManifolds (btManifoldArray &manifoldArray) override |
btCollisionAlgorithm * | getChildAlgorithm (int n) const |
TesseractCompoundCollisionAlgorithm & | operator= (const TesseractCompoundCollisionAlgorithm &)=default |
TesseractCompoundCollisionAlgorithm & | operator= (TesseractCompoundCollisionAlgorithm &&)=default |
void | processCollision (const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut) override |
TesseractCompoundCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, bool isSwapped) | |
TesseractCompoundCollisionAlgorithm (const TesseractCompoundCollisionAlgorithm &)=default | |
TesseractCompoundCollisionAlgorithm (TesseractCompoundCollisionAlgorithm &&)=default | |
~TesseractCompoundCollisionAlgorithm () override | |
Protected Member Functions | |
void | preallocateChildAlgorithms (const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap) |
void | removeChildAlgorithms () |
Protected Attributes | |
btAlignedObjectArray< btCollisionAlgorithm * > | m_childCollisionAlgorithms |
int | m_compoundShapeRevision |
bool | m_isSwapped |
bool | m_ownsManifold { false } |
class btPersistentManifold * | m_sharedManifold |
Private Attributes | |
btManifoldArray | manifoldArray |
btNodeStack | stack2 |
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.
Definition at line 52 of file tesseract_compound_collision_algorithm.h.
tesseract_collision::tesseract_collision_bullet::TesseractCompoundCollisionAlgorithm::TesseractCompoundCollisionAlgorithm | ( | const btCollisionAlgorithmConstructionInfo & | ci, |
const btCollisionObjectWrapper * | body0Wrap, | ||
const btCollisionObjectWrapper * | body1Wrap, | ||
bool | isSwapped | ||
) |
Definition at line 40 of file tesseract_compound_collision_algorithm.cpp.
|
override |
Definition at line 105 of file tesseract_compound_collision_algorithm.cpp.
|
default |
|
default |
|
override |
Definition at line 393 of file tesseract_compound_collision_algorithm.cpp.
|
inlineoverride |
Definition at line 94 of file tesseract_compound_collision_algorithm.h.
|
inline |
Definition at line 82 of file tesseract_compound_collision_algorithm.h.
|
default |
|
default |
|
protected |
Definition at line 55 of file tesseract_compound_collision_algorithm.cpp.
|
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
Definition at line 271 of file tesseract_compound_collision_algorithm.cpp.
|
protected |
Definition at line 92 of file tesseract_compound_collision_algorithm.cpp.
|
protected |
Definition at line 58 of file tesseract_compound_collision_algorithm.h.
|
protected |
Definition at line 64 of file tesseract_compound_collision_algorithm.h.
|
protected |
Definition at line 59 of file tesseract_compound_collision_algorithm.h.
|
protected |
Definition at line 62 of file tesseract_compound_collision_algorithm.h.
|
protected |
Definition at line 61 of file tesseract_compound_collision_algorithm.h.
|
private |
Definition at line 55 of file tesseract_compound_collision_algorithm.h.
|
private |
Definition at line 54 of file tesseract_compound_collision_algorithm.h.