7 #include "imstkCollisionHandling.h" 8 #include "imstkCollidingObject.h" 13 CollisionHandling::updateCollisionData(std::shared_ptr<const CollisionData> data)
16 const std::vector<CollisionElement>* a = &data->elementsA;
17 const std::vector<CollisionElement>* b = &data->elementsB;
20 std::shared_ptr<Geometry> handleGeomB = getHandlingGeometryB();
22 bool flipSides =
false;
24 if (data->geomA !=
nullptr 25 && m_inputObjectB !=
nullptr 26 && handleGeomB !=
nullptr 27 && data->geomA == handleGeomB)
31 if (data->geomB !=
nullptr 32 && m_inputObjectA !=
nullptr 33 && handleGeomA !=
nullptr 34 && data->geomB == handleGeomA)
46 std::shared_ptr<Geometry>
49 return (m_inputObjectA ==
nullptr) ? nullptr : m_inputObjectA->getCollidingGeometry();
52 std::shared_ptr<Geometry>
53 CollisionHandling::getHandlingGeometryB()
55 return (m_inputObjectB ==
nullptr) ? nullptr : m_inputObjectB->getCollidingGeometry();
63 m_updateFunction = [
this]() {
69 m_processConstraints =
true;
80 m_updateFunction = [
this]() {
82 m_processConstraints =
false;
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.
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...