Class CollisionDetection

Inheritance Relationships

Base Type

  • public GenParam::ParameterObject

Derived Type

Class Documentation

class CollisionDetection : public GenParam::ParameterObject

Subclassed by PBD::DistanceFieldCollisionDetection

Public Types

typedef void (*ContactCallbackFunction)(const unsigned int contactType, const unsigned int bodyIndex1, const unsigned int bodyIndex2, const Vector3r &cp1, const Vector3r &cp2, const Vector3r &normal, const Real dist, const Real restitutionCoeff, const Real frictionCoeff, void *userData)
typedef void (*SolidContactCallbackFunction)(const unsigned int contactType, const unsigned int bodyIndex1, const unsigned int bodyIndex2, const unsigned int tetIndex, const Vector3r &bary, const Vector3r &cp1, const Vector3r &cp2, const Vector3r &normal, const Real dist, const Real restitutionCoeff, const Real frictionCoeff, void *userData)

Public Functions

CollisionDetection()
virtual ~CollisionDetection()
void init()
void cleanup()
inline Real getTolerance() const
inline void setTolerance(Real val)
void addRigidBodyContact(const unsigned int rbIndex1, const unsigned int rbIndex2, const Vector3r &cp1, const Vector3r &cp2, const Vector3r &normal, const Real dist, const Real restitutionCoeff, const Real frictionCoeff)
void addParticleRigidBodyContact(const unsigned int particleIndex, const unsigned int rbIndex, const Vector3r &cp1, const Vector3r &cp2, const Vector3r &normal, const Real dist, const Real restitutionCoeff, const Real frictionCoeff)
void addParticleSolidContact(const unsigned int particleIndex, const unsigned int solidIndex, const unsigned int tetIndex, const Vector3r &bary, const Vector3r &cp1, const Vector3r &cp2, const Vector3r &normal, const Real dist, const Real restitutionCoeff, const Real frictionCoeff)
virtual void addCollisionObject(const unsigned int bodyIndex, const unsigned int bodyType)
inline std::vector<CollisionObject*> &getCollisionObjects()
virtual void collisionDetection(SimulationModel &model) = 0
void setContactCallback(CollisionDetection::ContactCallbackFunction val, void *userData)
void setSolidContactCallback(CollisionDetection::SolidContactCallbackFunction val, void *userData)
void updateAABBs(SimulationModel &model)
void updateAABB(SimulationModel &model, CollisionDetection::CollisionObject *co)

Public Static Attributes

static int CONTACT_TOLERANCE = -1
static const unsigned int RigidBodyContactType = 0
static const unsigned int ParticleContactType = 1
static const unsigned int ParticleRigidBodyContactType = 2
static const unsigned int ParticleSolidContactType = 3

Protected Functions

void updateAABB(const Vector3r &p, AABB &aabb)
virtual void initParameters()

Protected Attributes

Real m_tolerance
ContactCallbackFunction m_contactCB
SolidContactCallbackFunction m_solidContactCB
void *m_contactCBUserData
void *m_solidContactCBUserData
std::vector<CollisionObject*> m_collisionObjects
struct CollisionObject

Subclassed by PBD::CollisionDetection::CollisionObjectWithoutGeometry, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject

Public Functions

inline virtual ~CollisionObject()
virtual int &getTypeId() const = 0

Public Members

AABB m_aabb
unsigned int m_bodyIndex
unsigned int m_bodyType

Public Static Attributes

static const unsigned int RigidBodyCollisionObjectType = 0
static const unsigned int TriangleModelCollisionObjectType = 1
static const unsigned int TetModelCollisionObjectType = 2
struct CollisionObjectWithoutGeometry : public PBD::CollisionDetection::CollisionObject

Public Functions

inline virtual int &getTypeId() const
inline virtual ~CollisionObjectWithoutGeometry()

Public Static Attributes

static int TYPE_ID = IDFactory::getId()