9 #include "imstkCollisionData.h"    10 #include "imstkGeometryAlgorithm.h"    49     inline const std::shared_ptr<CollisionData> 
getCollisionData()
 const { 
return (*m_collisionDataVector)[0]; }
    53         return m_collisionDataVector->size() > i ? m_collisionDataVector->at(i) : 
nullptr;
    56     inline const std::shared_ptr<std::vector<std::shared_ptr<CollisionData>>>& getCollisionDataVector()
 const { 
return m_collisionDataVector; }
    58     inline size_t getCollisionDataVectorSize()
 const    60         return m_collisionDataVector->size();
    69         m_generateCD_A = generateA;
    70         m_generateCD_B = generateB;
    73     void setInputGeometryA(std::shared_ptr<Geometry> geometryA) { 
setInput(geometryA, 0); }
    75     void setInputGeometryB(std::shared_ptr<Geometry> geometryB) { 
setInput(geometryB, 1); }
    94         std::shared_ptr<Geometry>      geomA,
    95         std::shared_ptr<Geometry>      geomB,
    96         std::vector<CollisionElement>& elementsA,
    97         std::vector<CollisionElement>& elementsB)
   107         std::shared_ptr<Geometry>      imstkNotUsed(geomA),
   108         std::shared_ptr<Geometry>      imstkNotUsed(geomB),
   109         std::vector<CollisionElement>& imstkNotUsed(elementsA)) { m_computeColDataAImplemented = 
false; }
   115         std::shared_ptr<Geometry>      imstkNotUsed(geomA),
   116         std::shared_ptr<Geometry>      imstkNotUsed(geomB),
   117         std::vector<CollisionElement>& imstkNotUsed(elementsB)) { m_computeColDataBImplemented = 
false; }
   119     std::shared_ptr<std::vector<std::shared_ptr<CollisionData>>> m_collisionDataVector;
   121     bool m_flipOutput   = 
false;
   122     bool m_generateCD_A = 
true;
   123     bool m_generateCD_B = 
true;
   125     bool m_computeColDataAImplemented = 
true;
   126     bool m_computeColDataBImplemented = 
true;
 Base class for all collision detection classes. CollisionDetection classes produce CollisionData betw...
 
void setGenerateCD(const bool generateA, const bool generateB)
If generateA is false, CD data will not be generated for input0,A Similarly, if generateB is false...
 
virtual void computeCollisionDataA(std::shared_ptr< Geometry > imstkNotUsed(geomA), std::shared_ptr< Geometry > imstkNotUsed(geomB), std::vector< CollisionElement > &imstkNotUsed(elementsA))
Compute collision data for side A (implement as if flip=true) 
 
virtual bool areInputsValid() override
Check inputs are correct (always works reversibly) 
 
virtual const std::string getTypeName() const =0
Returns collision detection type string name. 
 
const std::shared_ptr< CollisionData > getCollisionData() const
Returns output collision data. 
 
virtual void computeCollisionDataB(std::shared_ptr< Geometry > imstkNotUsed(geomA), std::shared_ptr< Geometry > imstkNotUsed(geomB), std::vector< CollisionElement > &imstkNotUsed(elementsB))
Compute collision data for side B (implement as if flip=true) 
 
virtual void computeCollisionDataAB(std::shared_ptr< Geometry > geomA, std::shared_ptr< Geometry > geomB, std::vector< CollisionElement > &elementsA, std::vector< CollisionElement > &elementsB)
Compute collision data for both sides at once, default implementation just calls computeCollisionData...
 
void setInput(std::shared_ptr< Geometry > inputGeometry, size_t port=0)
Set the input at the port. 
 
virtual void requestUpdate() override
Compute the collision data. 
 
Abstract base class for geometry algorithms. GeometryAlgorithms take N input geometries and produce N...