7 #include "imstkSphObjectCollision.h" 8 #include "imstkCDObjectFactory.h" 9 #include "imstkCollisionData.h" 10 #include "imstkImplicitGeometryToPointSetCD.h" 11 #include "imstkSphCollisionHandling.h" 12 #include "imstkSphModel.h" 13 #include "imstkSphObject.h" 14 #include "imstkTaskGraph.h" 19 SphObjectCollision::SphObjectCollision(std::shared_ptr<SphObject> obj1, std::shared_ptr<CollidingObject> obj2,
21 CollisionInteraction(
"SphObjectCollision_" + obj1->getName() +
"_vs_" + obj2->getName(), obj1, obj2, cdType)
24 std::shared_ptr<SphCollisionHandling> ch = std::make_shared<SphCollisionHandling>();
25 ch->setInputObjectA(obj1);
26 ch->setInputCollisionData(m_colDetect->getCollisionData());
27 ch->setDetection(m_colDetect);
28 setCollisionHandlingA(ch);
31 m_taskGraph->addNode(obj1->getUpdateGeometryNode());
32 m_taskGraph->addNode(obj2->getUpdateGeometryNode());
34 m_taskGraph->addNode(obj1->getTaskGraph()->getSink());
35 m_taskGraph->addNode(obj2->getTaskGraph()->getSink());
43 auto sphObj1 = std::dynamic_pointer_cast<
SphObject>(m_objA);
52 m_taskGraph->addEdge(sphObj1->getUpdateGeometryNode(), m_collisionDetectionNode);
53 m_taskGraph->addEdge(m_objB->getUpdateGeometryNode(), m_collisionDetectionNode);
55 m_taskGraph->addEdge(m_collisionDetectionNode, m_collisionHandleANode);
57 m_taskGraph->addEdge(m_collisionHandleANode, sphObj1->getTaskGraph()->getSink());
58 m_taskGraph->addEdge(m_collisionHandleANode, m_objB->getTaskGraph()->getSink());
Base class for scene objects that move and/or deform under smooth particle hydrodynamics.
std::shared_ptr< TaskGraph > m_taskGraph
Computational graph.
void initGraphEdges()
Initializes the edges of the SceneObject's computational graph.