From 6fde189735a8729855ec18c6aff0367b3f23a79c Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 8 Jan 2020 13:49:41 -0800 Subject: [PATCH 1/2] fix indexing issue removing graphics shape in tinyrenderer plugin (use getUserIndex3 instead of broadphase uid) --- examples/SharedMemory/PhysicsServerCommandProcessor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 3b1f30f81..3388bbd3d 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -10544,7 +10544,7 @@ bool PhysicsServerCommandProcessor::processRemoveBodyCommand(const struct Shared { if (m_data->m_pluginManager.getRenderInterface()) { - m_data->m_pluginManager.getRenderInterface()->removeVisualShape(bodyHandle->m_multiBody->getBaseCollider()->getBroadphaseHandle()->getUid()); + m_data->m_pluginManager.getRenderInterface()->removeVisualShape(bodyHandle->m_multiBody->getBaseCollider()->getUserIndex3()); } m_data->m_dynamicsWorld->removeCollisionObject(bodyHandle->m_multiBody->getBaseCollider()); int graphicsIndex = bodyHandle->m_multiBody->getBaseCollider()->getUserIndex(); @@ -10558,7 +10558,7 @@ bool PhysicsServerCommandProcessor::processRemoveBodyCommand(const struct Shared { if (m_data->m_pluginManager.getRenderInterface()) { - m_data->m_pluginManager.getRenderInterface()->removeVisualShape(bodyHandle->m_multiBody->getLink(link).m_collider->getBroadphaseHandle()->getUid()); + m_data->m_pluginManager.getRenderInterface()->removeVisualShape(bodyHandle->m_multiBody->getLink(link).m_collider->getUserIndex3()); } m_data->m_dynamicsWorld->removeCollisionObject(bodyHandle->m_multiBody->getLink(link).m_collider); int graphicsIndex = bodyHandle->m_multiBody->getLink(link).m_collider->getUserIndex(); From 07cdae8c6e09edacf9224d960012ff258d04b7e5 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 8 Jan 2020 14:02:32 -0800 Subject: [PATCH 2/2] also apply TinyRenderer remove shape fix for rigid body and soft body/deformable --- examples/SharedMemory/PhysicsServerCommandProcessor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 3388bbd3d..bc484b8d0 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -10578,7 +10578,7 @@ bool PhysicsServerCommandProcessor::processRemoveBodyCommand(const struct Shared { if (m_data->m_pluginManager.getRenderInterface()) { - m_data->m_pluginManager.getRenderInterface()->removeVisualShape(bodyHandle->m_rigidBody->getBroadphaseHandle()->getUid()); + m_data->m_pluginManager.getRenderInterface()->removeVisualShape(bodyHandle->m_rigidBody->getUserIndex3()); } serverCmd.m_removeObjectArgs.m_bodyUniqueIds[serverCmd.m_removeObjectArgs.m_numBodies++] = bodyUniqueId; @@ -10602,7 +10602,7 @@ bool PhysicsServerCommandProcessor::processRemoveBodyCommand(const struct Shared btSoftBody* psb = bodyHandle->m_softBody; if (m_data->m_pluginManager.getRenderInterface()) { - m_data->m_pluginManager.getRenderInterface()->removeVisualShape(psb->getBroadphaseHandle()->getUid()); + m_data->m_pluginManager.getRenderInterface()->removeVisualShape(psb->getUserIndex3()); } serverCmd.m_removeObjectArgs.m_bodyUniqueIds[serverCmd.m_removeObjectArgs.m_numBodies++] = bodyUniqueId; btSoftMultiBodyDynamicsWorld* softWorld = getSoftWorld();