summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTigran Gasparian <gaspariantigran@gmail.com>2019-08-08 09:50:32 +0200
committerTigran Gasparian <gaspariantigran@gmail.com>2019-08-08 09:50:32 +0200
commit822c24e8678164ea632f725204bef913031824e6 (patch)
tree9c0210eecb2a4a1ff3d2d5341ba6c8416c895eba
parent666e1a8bad7dbebc2f40f15cb763dddc86154df6 (diff)
downloadbullet3-822c24e8678164ea632f725204bef913031824e6.tar.gz
Clears body and user data caches when syncBodyInfo and syncUserData are called
-rw-r--r--examples/SharedMemory/PhysicsClientSharedMemory.cpp5
-rw-r--r--examples/SharedMemory/PhysicsDirect.cpp5
2 files changed, 6 insertions, 4 deletions
diff --git a/examples/SharedMemory/PhysicsClientSharedMemory.cpp b/examples/SharedMemory/PhysicsClientSharedMemory.cpp
index daebb7afd..20d6adade 100644
--- a/examples/SharedMemory/PhysicsClientSharedMemory.cpp
+++ b/examples/SharedMemory/PhysicsClientSharedMemory.cpp
@@ -1270,6 +1270,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
case CMD_SYNC_BODY_INFO_COMPLETED:
{
+ m_data->m_bodyJointMap.clear();
break;
}
case CMD_STATE_LOGGING_START_COMPLETED:
@@ -1553,6 +1554,8 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
{
B3_PROFILE("CMD_SYNC_USER_DATA_COMPLETED");
// Remove all cached user data entries.
+ m_data->m_userDataMap.clear();
+ m_data->m_userDataHandleLookup.clear();
for (int i = 0; i < m_data->m_bodyJointMap.size(); i++)
{
BodyJointInfoCache** bodyJointsPtr = m_data->m_bodyJointMap.getAtIndex(i);
@@ -1560,8 +1563,6 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
{
(*bodyJointsPtr)->m_userDataIds.clear();
}
- m_data->m_userDataMap.clear();
- m_data->m_userDataHandleLookup.clear();
}
const int numIdentifiers = serverCmd.m_syncUserDataArgs.m_numUserDataIdentifiers;
if (numIdentifiers > 0)
diff --git a/examples/SharedMemory/PhysicsDirect.cpp b/examples/SharedMemory/PhysicsDirect.cpp
index d838cc7ba..69d4b4ff5 100644
--- a/examples/SharedMemory/PhysicsDirect.cpp
+++ b/examples/SharedMemory/PhysicsDirect.cpp
@@ -912,6 +912,7 @@ void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd
break;
}
case CMD_SYNC_BODY_INFO_COMPLETED:
+ m_data->m_bodyJointMap.clear();
case CMD_MJCF_LOADING_COMPLETED:
case CMD_SDF_LOADING_COMPLETED:
{
@@ -1193,6 +1194,8 @@ void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd
{
B3_PROFILE("CMD_SYNC_USER_DATA_COMPLETED");
// Remove all cached user data entries.
+ m_data->m_userDataMap.clear();
+ m_data->m_userDataHandleLookup.clear();
for (int i = 0; i < m_data->m_bodyJointMap.size(); i++)
{
BodyJointInfoCache2** bodyJointsPtr = m_data->m_bodyJointMap.getAtIndex(i);
@@ -1200,8 +1203,6 @@ void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd
{
(*bodyJointsPtr)->m_userDataIds.clear();
}
- m_data->m_userDataMap.clear();
- m_data->m_userDataHandleLookup.clear();
}
const int numIdentifiers = serverCmd.m_syncUserDataArgs.m_numUserDataIdentifiers;
int* identifiers = new int[numIdentifiers];