diff options
author | erwincoumans <erwin.coumans@gmail.com> | 2018-09-21 17:33:13 -0700 |
---|---|---|
committer | erwincoumans <erwin.coumans@gmail.com> | 2018-09-21 17:33:13 -0700 |
commit | 278454ae17d01a8878dc0d3c7012fc0adabf4c7a (patch) | |
tree | 6935345517edd48a16110b030b3f216e0b831227 | |
parent | 874bbc91a36aa57905699ca558a4a99c73e56f2d (diff) | |
download | bullet3-278454ae17d01a8878dc0d3c7012fc0adabf4c7a.tar.gz |
allow to disable self-collision for a link-pair
-rw-r--r-- | examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp b/examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp index 4e65cfcbc..3ec2a99ca 100644 --- a/examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp +++ b/examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp @@ -62,6 +62,13 @@ struct DefaultPluginCollisionInterface : public b3PluginCollisionInterface b3Swap(keyValue.m_objectUniqueIdA,keyValue.m_objectUniqueIdB); b3Swap(keyValue.m_linkIndexA,keyValue.m_linkIndexB); } + if (objectUniqueIdA==objectUniqueIdB) + { + if (keyValue.m_linkIndexA>keyValue.m_linkIndexB) + { + b3Swap(keyValue.m_linkIndexA,keyValue.m_linkIndexB); + } + } m_customCollisionFilters.insert(keyValue,keyValue); @@ -83,6 +90,13 @@ struct DefaultPluginCollisionInterface : public b3PluginCollisionInterface b3Swap(keyValue.m_objectUniqueIdA,keyValue.m_objectUniqueIdB); b3Swap(keyValue.m_linkIndexA,keyValue.m_linkIndexB); } + if (objectUniqueIdA==objectUniqueIdB) + { + if (keyValue.m_linkIndexA>keyValue.m_linkIndexB) + { + b3Swap(keyValue.m_linkIndexA,keyValue.m_linkIndexB); + } + } m_customCollisionFilters.remove(keyValue); } @@ -116,6 +130,13 @@ struct DefaultPluginCollisionInterface : public b3PluginCollisionInterface b3Swap(keyValue.m_objectUniqueIdA,keyValue.m_objectUniqueIdB); b3Swap(keyValue.m_linkIndexA,keyValue.m_linkIndexB); } + if (objectUniqueIdA==objectUniqueIdB) + { + if (keyValue.m_linkIndexA>keyValue.m_linkIndexB) + { + b3Swap(keyValue.m_linkIndexA,keyValue.m_linkIndexB); + } + } b3CustomCollisionFilter* filter = m_customCollisionFilters.find(keyValue); if (filter) |