Adds an option to syncUserData to specify the bodies for which to sync.

This commit is contained in:
Tigran Gasparian
2020-01-23 14:46:33 +01:00
parent 34eb3d19bf
commit 34db76d263
7 changed files with 66 additions and 8 deletions

View File

@@ -6139,7 +6139,24 @@ bool PhysicsServerCommandProcessor::processSyncUserDataCommand(const struct Shar
BT_PROFILE("CMD_SYNC_USER_DATA");
b3AlignedObjectArray<int> userDataHandles;
m_data->m_userDataHandles.getUsedHandles(userDataHandles);
if (clientCmd.m_syncUserDataRequestArgs.m_numRequestedBodies == 0)
{
m_data->m_userDataHandles.getUsedHandles(userDataHandles);
}
else
{
for (int i=0; i<clientCmd.m_syncUserDataRequestArgs.m_numRequestedBodies; ++i) {
const int bodyUniqueId = clientCmd.m_syncUserDataRequestArgs.m_requestedBodyIds[i];
InternalBodyData* body = m_data->m_bodyHandles.getHandle(bodyUniqueId);
if (!body)
{
return hasStatus;
}
for (int j=0; j < body->m_userDataHandles.size(); ++j) {
userDataHandles.push_back(body->m_userDataHandles[j]);
}
}
}
if (userDataHandles.size())
{
memcpy(bufferServerToClient, &userDataHandles[0], sizeof(int) * userDataHandles.size());