From 3048326addc9a068a2a2264941bcfe1b04a9b44e Mon Sep 17 00:00:00 2001 From: Oleg Klimov Date: Mon, 27 Mar 2017 22:30:43 +0300 Subject: [PATCH] C API: fix b3SetContactFilterLink() when using b3RequestContactPoint() --- .../SharedMemory/PhysicsServerCommandProcessor.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 33cc39096..40dc3c5e1 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -3808,6 +3808,12 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm { linkIndexB = mblB->m_link; objectIndexB = mblB->m_multiBody->getUserIndex2(); + if ( + (clientCmd.m_updateFlags & CMD_REQUEST_CONTACT_POINT_HAS_LINK_INDEX_B_FILTER) && + clientCmd.m_requestContactPointArguments.m_linkIndexBIndexFilter != linkIndexB) + { + continue; + } } int objectIndexA = -1; @@ -3820,8 +3826,13 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm if (mblA && mblA->m_multiBody) { linkIndexA = mblA->m_link; - objectIndexA = mblA->m_multiBody->getUserIndex2(); + if ( + (clientCmd.m_updateFlags & CMD_REQUEST_CONTACT_POINT_HAS_LINK_INDEX_A_FILTER) && + clientCmd.m_requestContactPointArguments.m_linkIndexAIndexFilter != linkIndexA) + { + continue; + } } btAssert(bodyA || mblA);