Clears body and user data caches when syncBodyInfo and syncUserData are called

This commit is contained in:
Tigran Gasparian
2019-08-08 09:50:32 +02:00
parent 666e1a8bad
commit 822c24e867
2 changed files with 6 additions and 4 deletions

View File

@@ -1270,6 +1270,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
case CMD_SYNC_BODY_INFO_COMPLETED: case CMD_SYNC_BODY_INFO_COMPLETED:
{ {
m_data->m_bodyJointMap.clear();
break; break;
} }
case CMD_STATE_LOGGING_START_COMPLETED: case CMD_STATE_LOGGING_START_COMPLETED:
@@ -1553,6 +1554,8 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
{ {
B3_PROFILE("CMD_SYNC_USER_DATA_COMPLETED"); B3_PROFILE("CMD_SYNC_USER_DATA_COMPLETED");
// Remove all cached user data entries. // 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++) for (int i = 0; i < m_data->m_bodyJointMap.size(); i++)
{ {
BodyJointInfoCache** bodyJointsPtr = m_data->m_bodyJointMap.getAtIndex(i); BodyJointInfoCache** bodyJointsPtr = m_data->m_bodyJointMap.getAtIndex(i);
@@ -1560,8 +1563,6 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
{ {
(*bodyJointsPtr)->m_userDataIds.clear(); (*bodyJointsPtr)->m_userDataIds.clear();
} }
m_data->m_userDataMap.clear();
m_data->m_userDataHandleLookup.clear();
} }
const int numIdentifiers = serverCmd.m_syncUserDataArgs.m_numUserDataIdentifiers; const int numIdentifiers = serverCmd.m_syncUserDataArgs.m_numUserDataIdentifiers;
if (numIdentifiers > 0) if (numIdentifiers > 0)

View File

@@ -912,6 +912,7 @@ void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd
break; break;
} }
case CMD_SYNC_BODY_INFO_COMPLETED: case CMD_SYNC_BODY_INFO_COMPLETED:
m_data->m_bodyJointMap.clear();
case CMD_MJCF_LOADING_COMPLETED: case CMD_MJCF_LOADING_COMPLETED:
case CMD_SDF_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"); B3_PROFILE("CMD_SYNC_USER_DATA_COMPLETED");
// Remove all cached user data entries. // 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++) for (int i = 0; i < m_data->m_bodyJointMap.size(); i++)
{ {
BodyJointInfoCache2** bodyJointsPtr = m_data->m_bodyJointMap.getAtIndex(i); BodyJointInfoCache2** bodyJointsPtr = m_data->m_bodyJointMap.getAtIndex(i);
@@ -1200,8 +1203,6 @@ void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd
{ {
(*bodyJointsPtr)->m_userDataIds.clear(); (*bodyJointsPtr)->m_userDataIds.clear();
} }
m_data->m_userDataMap.clear();
m_data->m_userDataHandleLookup.clear();
} }
const int numIdentifiers = serverCmd.m_syncUserDataArgs.m_numUserDataIdentifiers; const int numIdentifiers = serverCmd.m_syncUserDataArgs.m_numUserDataIdentifiers;
int* identifiers = new int[numIdentifiers]; int* identifiers = new int[numIdentifiers];