summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerwincoumans <erwin.coumans@gmail.com>2018-09-21 17:33:13 -0700
committererwincoumans <erwin.coumans@gmail.com>2018-09-21 17:33:13 -0700
commit278454ae17d01a8878dc0d3c7012fc0adabf4c7a (patch)
tree6935345517edd48a16110b030b3f216e0b831227
parent874bbc91a36aa57905699ca558a4a99c73e56f2d (diff)
downloadbullet3-278454ae17d01a8878dc0d3c7012fc0adabf4c7a.tar.gz
allow to disable self-collision for a link-pair
-rw-r--r--examples/SharedMemory/plugins/collisionFilterPlugin/collisionFilterPlugin.cpp21
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)