Skip to content
Snippets Groups Projects
Commit 87667798 authored by Alexis Girault's avatar Alexis Girault
Browse files

ENH: Add collision in sceneManager

Implement getInteractionPairList and getInteractionPairMap
in CollisionGraph for this.
parent e2a35ae1
No related branches found
No related tags found
No related merge requests found
......@@ -123,4 +123,15 @@ CollisionGraph::getInteractionPair(CollidingObjectPtr A, CollidingObjectPtr B)
return nullptr;
}
const std::vector<std::shared_ptr<InteractionPair>>&
CollisionGraph::getInteractionPairList() const
{
return m_interactionPairList;
}
const std::unordered_map<std::shared_ptr<CollidingObject>, std::vector<std::shared_ptr<InteractionPair>>>&
CollisionGraph::getInteractionPairMap() const
{
return m_interactionPairMap;
}
}
......@@ -64,6 +64,18 @@ public:
///
InteractionPairPtr getInteractionPair(CollidingObjectPtr A, CollidingObjectPtr B);
///
/// \brief Returns a vector of all interaction pairs in the collision graph
///
const std::vector<InteractionPairPtr>& getInteractionPairList() const;
///
/// \brief Returns a map of all interaction pairs per object
///
const std::unordered_map<
CollidingObjectPtr,
std::vector<InteractionPairPtr>>& getInteractionPairMap() const;
protected:
std::vector<InteractionPairPtr> m_interactionPairList; //!< All interaction pairs in the collision graph
......
......@@ -56,6 +56,23 @@ SceneManager::initModule()
void
SceneManager::runModule()
{
// Compute collision data per interaction pair
for (auto intPair : m_scene->getCollisionGraph()->getInteractionPairList())
{
intPair->computeCollisionData();
}
// Compute contact forces per objects
for (auto objIntPair : m_scene->getCollisionGraph()->getInteractionPairMap())
{
auto obj = objIntPair.first;
auto intPairVector = objIntPair.second;
for (auto intPair : intPairVector)
{
intPair->computeContactForces(obj);
}
}
// Update virtualCoupling objects based on devices
for (auto obj : m_scene->getSceneObjects())
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment