9 #include "imstkCollisionData.h" 13 class CollidingObject;
14 class InteractionPair;
30 virtual const std::string getTypeName()
const = 0;
35 void setInputObjectA(std::shared_ptr<CollidingObject> objectA) { m_inputObjectA = objectA; }
36 void setInputObjectB(std::shared_ptr<CollidingObject> objectB) { m_inputObjectB = objectB; }
41 std::shared_ptr<CollidingObject>
getInputObjectA()
const {
return m_inputObjectA; }
42 std::shared_ptr<CollidingObject> getInputObjectB()
const {
return m_inputObjectB; }
49 virtual std::shared_ptr<Geometry> getHandlingGeometryB();
60 void setInputCollisionData(std::shared_ptr<std::vector<std::shared_ptr<CollisionData>>> collisionVectorData);
62 std::shared_ptr<const CollisionData> getInputCollisionData()
const {
return m_colData; }
82 const std::vector<CollisionElement>& elementsA,
83 const std::vector<CollisionElement>& elementsB) = 0;
85 std::shared_ptr<CollidingObject> m_inputObjectA;
86 std::shared_ptr<CollidingObject> m_inputObjectB;
95 std::function<void()> m_updateFunction = []() {};
99 void updateCollisionData(std::shared_ptr<const CollisionData> data);
104 bool m_clearData =
true;
105 bool m_processConstraints =
true;
void setInputObjectA(std::shared_ptr< CollidingObject > objectA)
Set the input objects.
std::shared_ptr< const CollisionData > m_colData
Collision data.
std::shared_ptr< std::vector< std::shared_ptr< CollisionData > > > m_colVectorData
Expansion to allow collision detection to return multiple types of collision data.
void setInputCollisionData(std::shared_ptr< CollisionData > collisionData)
Set/Get the input collision data used for handling.
virtual std::shared_ptr< Geometry > getHandlingGeometryA()
Get the geometry used for handling defaults to the collision geometry.
void update()
Handle the input collision data.
std::shared_ptr< CollidingObject > getInputObjectA() const
Get the input objects.
Base class for all collision handling classes.
virtual void handle(const std::vector< CollisionElement > &elementsA, const std::vector< CollisionElement > &elementsB)=0
Handle the input collision data. Elements will be flipped (if needed) such that elementsA corresponds...