void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd) { switch (serverCmd.m_type) { case CMD_REQUEST_RAY_CAST_INTERSECTIONS_COMPLETED: { if (m_data->m_verboseOutput) { b3Printf("Raycast completed"); } m_data->m_raycastHits.clear(); b3RayHitInfo* rayHits = (b3RayHitInfo*)m_data->m_bulletStreamDataServerToClient; for (int i = 0; i < serverCmd.m_raycastHits.m_numRaycastHits; i++) { m_data->m_raycastHits.push_back(rayHits[i]); } break; } case CMD_REQUEST_VR_EVENTS_DATA_COMPLETED: { if (m_data->m_verboseOutput) { b3Printf("Request VR Events completed"); } m_data->m_cachedVREvents.resize(serverCmd.m_sendVREvents.m_numVRControllerEvents); for (int i = 0; i < serverCmd.m_sendVREvents.m_numVRControllerEvents; i++) { m_data->m_cachedVREvents[i] = serverCmd.m_sendVREvents.m_controllerEvents[i]; } break; } case CMD_REQUEST_KEYBOARD_EVENTS_DATA_COMPLETED: { if (m_data->m_verboseOutput) { b3Printf("Request keyboard events completed"); } m_data->m_cachedKeyboardEvents.resize(serverCmd.m_sendKeyboardEvents.m_numKeyboardEvents); for (int i = 0; i < serverCmd.m_sendKeyboardEvents.m_numKeyboardEvents; i++) { m_data->m_cachedKeyboardEvents[i] = serverCmd.m_sendKeyboardEvents.m_keyboardEvents[i]; } break; } case CMD_REQUEST_MOUSE_EVENTS_DATA_COMPLETED: { B3_PROFILE("CMD_REQUEST_MOUSE_EVENTS_DATA_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Request mouse events completed"); } m_data->m_cachedMouseEvents.resize(serverCmd.m_sendMouseEvents.m_numMouseEvents); for (int i = 0; i < serverCmd.m_sendMouseEvents.m_numMouseEvents; i++) { m_data->m_cachedMouseEvents[i] = serverCmd.m_sendMouseEvents.m_mouseEvents[i]; } break; } case CMD_REQUEST_INTERNAL_DATA_COMPLETED: { if (serverCmd.m_numDataStreamBytes) { int numStreamBytes = serverCmd.m_numDataStreamBytes; m_data->m_serverDNA.resize(numStreamBytes); for (int i = 0; i < numStreamBytes; i++) { m_data->m_serverDNA[i] = m_data->m_bulletStreamDataServerToClient[i]; } } break; } case CMD_RESET_SIMULATION_COMPLETED: { resetData(); break; } case CMD_USER_CONSTRAINT_INFO_COMPLETED: case CMD_USER_CONSTRAINT_COMPLETED: { int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.insert(cid, serverCmd.m_userConstraintResultArgs); break; } case CMD_REMOVE_USER_CONSTRAINT_COMPLETED: { int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.remove(cid); break; } case CMD_REMOVE_BODY_FAILED: { b3Warning("Remove body failed\n"); break; } case CMD_REMOVE_BODY_COMPLETED: { for (int i = 0; i < serverCmd.m_removeObjectArgs.m_numBodies; i++) { int bodyUniqueId = serverCmd.m_removeObjectArgs.m_bodyUniqueIds[i]; removeCachedBody(bodyUniqueId); } for (int i = 0; i < serverCmd.m_removeObjectArgs.m_numUserConstraints; i++) { int key = serverCmd.m_removeObjectArgs.m_userConstraintUniqueIds[i]; m_data->m_userConstraintInfoMap.remove(key); } break; } case CMD_CHANGE_USER_CONSTRAINT_COMPLETED: { int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; b3UserConstraint* userConstraintPtr = m_data->m_userConstraintInfoMap[cid]; if (userConstraintPtr) { const b3UserConstraint* serverConstraint = &serverCmd.m_userConstraintResultArgs; if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_PIVOT_IN_B) { userConstraintPtr->m_childFrame[0] = serverConstraint->m_childFrame[0]; userConstraintPtr->m_childFrame[1] = serverConstraint->m_childFrame[1]; userConstraintPtr->m_childFrame[2] = serverConstraint->m_childFrame[2]; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_FRAME_ORN_IN_B) { userConstraintPtr->m_childFrame[3] = serverConstraint->m_childFrame[3]; userConstraintPtr->m_childFrame[4] = serverConstraint->m_childFrame[4]; userConstraintPtr->m_childFrame[5] = serverConstraint->m_childFrame[5]; userConstraintPtr->m_childFrame[6] = serverConstraint->m_childFrame[6]; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_MAX_FORCE) { userConstraintPtr->m_maxAppliedForce = serverConstraint->m_maxAppliedForce; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_GEAR_RATIO) { userConstraintPtr->m_gearRatio = serverConstraint->m_gearRatio; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_RELATIVE_POSITION_TARGET) { userConstraintPtr->m_relativePositionTarget = serverConstraint->m_relativePositionTarget; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_ERP) { userConstraintPtr->m_erp = serverConstraint->m_erp; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_GEAR_AUX_LINK) { userConstraintPtr->m_gearAuxLink = serverConstraint->m_gearAuxLink; } } break; } case CMD_USER_CONSTRAINT_REQUEST_STATE_COMPLETED: { break; } case CMD_SYNC_BODY_INFO_COMPLETED: case CMD_MJCF_LOADING_COMPLETED: case CMD_SDF_LOADING_COMPLETED: { //we'll stream further info from the physics server //so serverCmd will be invalid, make a copy int numConstraints = serverCmd.m_sdfLoadedArgs.m_numUserConstraints; for (int i = 0; i < numConstraints; i++) { int constraintUid = serverCmd.m_sdfLoadedArgs.m_userConstraintUniqueIds[i]; m_data->m_tmpInfoRequestCommand.m_type = CMD_USER_CONSTRAINT; m_data->m_tmpInfoRequestCommand.m_updateFlags = USER_CONSTRAINT_REQUEST_INFO; m_data->m_tmpInfoRequestCommand.m_userConstraintArguments.m_userConstraintUniqueId = constraintUid; bool hasStatus = m_data->m_commandProcessor->processCommand(m_data->m_tmpInfoRequestCommand, m_data->m_tmpInfoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); b3Clock clock; double startTime = clock.getTimeInSeconds(); double timeOutInSeconds = m_data->m_timeOutInSeconds; while ((!hasStatus) && (clock.getTimeInSeconds() - startTime < timeOutInSeconds)) { hasStatus = m_data->m_commandProcessor->receiveStatus(m_data->m_tmpInfoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); } if (hasStatus) { int cid = m_data->m_tmpInfoStatus.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.insert(cid, m_data->m_tmpInfoStatus.m_userConstraintResultArgs); } } int numBodies = serverCmd.m_sdfLoadedArgs.m_numBodies; for (int i = 0; i < numBodies; i++) { int bodyUniqueId = serverCmd.m_sdfLoadedArgs.m_bodyUniqueIds[i]; m_data->m_tmpInfoRequestCommand.m_type = CMD_REQUEST_BODY_INFO; m_data->m_tmpInfoRequestCommand.m_sdfRequestInfoArgs.m_bodyUniqueId = bodyUniqueId; bool hasStatus = m_data->m_commandProcessor->processCommand(m_data->m_tmpInfoRequestCommand, m_data->m_tmpInfoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); b3Clock clock; double startTime = clock.getTimeInSeconds(); double timeOutInSeconds = m_data->m_timeOutInSeconds; while ((!hasStatus) && (clock.getTimeInSeconds() - startTime < timeOutInSeconds)) { hasStatus = m_data->m_commandProcessor->receiveStatus(m_data->m_tmpInfoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); } if (hasStatus) { processBodyJointInfo(bodyUniqueId, m_data->m_tmpInfoStatus); } } break; } case CMD_CREATE_MULTI_BODY_COMPLETED: case CMD_URDF_LOADING_COMPLETED: { if (serverCmd.m_numDataStreamBytes > 0) { int bodyIndex = serverCmd.m_dataStreamArguments.m_bodyUniqueId; processBodyJointInfo(bodyIndex, serverCmd); } break; } case CMD_BULLET_LOADING_FAILED: { b3Warning("Couldn't load .bullet file"); break; } case CMD_BULLET_LOADING_COMPLETED: { break; } case CMD_REQUEST_OPENGL_VISUALIZER_CAMERA_COMPLETED: { break; } case CMD_REQUEST_OPENGL_VISUALIZER_CAMERA_FAILED: { b3Warning("requestOpenGLVisualizeCamera failed"); break; } case CMD_REMOVE_USER_CONSTRAINT_FAILED: { b3Warning("removeConstraint failed"); break; } case CMD_CHANGE_USER_CONSTRAINT_FAILED: { //b3Warning("changeConstraint failed"); break; } case CMD_USER_CONSTRAINT_FAILED: { b3Warning("createConstraint failed"); break; } case CMD_CREATE_COLLISION_SHAPE_FAILED: { b3Warning("createCollisionShape failed"); break; } case CMD_CREATE_COLLISION_SHAPE_COMPLETED: { break; } case CMD_CREATE_VISUAL_SHAPE_FAILED: { b3Warning("createVisualShape failed"); break; } case CMD_CREATE_VISUAL_SHAPE_COMPLETED: { break; } case CMD_CREATE_MULTI_BODY_FAILED: { b3Warning("createMultiBody failed"); break; } case CMD_REQUEST_COLLISION_INFO_COMPLETED: { break; } case CMD_REQUEST_COLLISION_INFO_FAILED: { b3Warning("Request getCollisionInfo failed"); break; } case CMD_CUSTOM_COMMAND_COMPLETED: { break; } case CMD_CUSTOM_COMMAND_FAILED: { b3Warning("custom plugin command failed"); break; } case CMD_CLIENT_COMMAND_COMPLETED: { break; } case CMD_CALCULATED_JACOBIAN_COMPLETED: { break; } case CMD_CALCULATED_JACOBIAN_FAILED: { b3Warning("jacobian calculation failed"); break; } case CMD_CALCULATED_MASS_MATRIX_FAILED: { b3Warning("calculate mass matrix failed"); break; } case CMD_CALCULATED_MASS_MATRIX_COMPLETED: { double* matrixData = (double*)&m_data->m_bulletStreamDataServerToClient[0]; m_data->m_cachedMassMatrix.resize(serverCmd.m_massMatrixResultArgs.m_dofCount * serverCmd.m_massMatrixResultArgs.m_dofCount); for (int i = 0; i < serverCmd.m_massMatrixResultArgs.m_dofCount * serverCmd.m_massMatrixResultArgs.m_dofCount; i++) { m_data->m_cachedMassMatrix[i] = matrixData[i]; } break; } case CMD_ACTUAL_STATE_UPDATE_COMPLETED: { break; } case CMD_DESIRED_STATE_RECEIVED_COMPLETED: { break; } case CMD_STEP_FORWARD_SIMULATION_COMPLETED: { break; } case CMD_REQUEST_PHYSICS_SIMULATION_PARAMETERS_COMPLETED: { break; } case CMD_SAVE_STATE_COMPLETED: { break; } case CMD_COLLISION_SHAPE_INFO_FAILED: { b3Warning("getCollisionShapeData failed"); break; } case CMD_COLLISION_SHAPE_INFO_COMPLETED: { B3_PROFILE("CMD_COLLISION_SHAPE_INFO_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Collision Shape Information Request OK\n"); } int numCollisionShapesCopied = serverCmd.m_sendCollisionShapeArgs.m_numCollisionShapes; m_data->m_cachedCollisionShapes.resize(numCollisionShapesCopied); b3CollisionShapeData* shapeData = (b3CollisionShapeData*)&m_data->m_bulletStreamDataServerToClient[0]; for (int i = 0; i < numCollisionShapesCopied; i++) { m_data->m_cachedCollisionShapes[i] = shapeData[i]; } break; } case CMD_RESTORE_STATE_FAILED: { b3Warning("restoreState failed"); break; } case CMD_RESTORE_STATE_COMPLETED: { break; } case CMD_BULLET_SAVING_COMPLETED: { break; } case CMD_LOAD_SOFT_BODY_FAILED: { b3Warning("loadSoftBody failed"); break; } case CMD_LOAD_SOFT_BODY_COMPLETED: { break; } case CMD_SYNC_USER_DATA_FAILED: { b3Warning("Synchronizing user data failed."); break; } case CMD_ADD_USER_DATA_FAILED: { b3Warning("Adding user data failed (do the specified body and link exist?)"); break; } case CMD_REMOVE_USER_DATA_FAILED: { b3Warning("Removing user data failed"); break; } case CMD_ADD_USER_DATA_COMPLETED: { processAddUserData(serverCmd); break; } case CMD_SYNC_USER_DATA_COMPLETED: { B3_PROFILE("CMD_SYNC_USER_DATA_COMPLETED"); // Remove all cached user data entries. for (int i = 0; i < m_data->m_bodyJointMap.size(); i++) { BodyJointInfoCache2** bodyJointsPtr = m_data->m_bodyJointMap.getAtIndex(i); if (bodyJointsPtr && *bodyJointsPtr) { (*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]; memcpy(identifiers, &m_data->m_bulletStreamDataServerToClient[0], numIdentifiers * sizeof(int)); for (int i = 0; i < numIdentifiers; i++) { m_data->m_tmpInfoRequestCommand.m_type = CMD_REQUEST_USER_DATA; m_data->m_tmpInfoRequestCommand.m_userDataRequestArgs.m_userDataId = identifiers[i]; bool hasStatus = m_data->m_commandProcessor->processCommand(m_data->m_tmpInfoRequestCommand, m_data->m_tmpInfoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); b3Clock clock; double startTime = clock.getTimeInSeconds(); double timeOutInSeconds = m_data->m_timeOutInSeconds; while ((!hasStatus) && (clock.getTimeInSeconds() - startTime < timeOutInSeconds)) { hasStatus = m_data->m_commandProcessor->receiveStatus(m_data->m_tmpInfoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); } if (hasStatus) { processAddUserData(m_data->m_tmpInfoStatus); } } delete[] identifiers; break; } case CMD_REMOVE_USER_DATA_COMPLETED: { const int userDataId = serverCmd.m_removeUserDataResponseArgs.m_userDataId; SharedMemoryUserData* userData = m_data->m_userDataMap[userDataId]; if (userData) { BodyJointInfoCache2** bodyJointsPtr = m_data->m_bodyJointMap[userData->m_bodyUniqueId]; if (bodyJointsPtr && *bodyJointsPtr) { (*bodyJointsPtr)->m_userDataIds.remove(userDataId); } m_data->m_userDataHandleLookup.remove(SharedMemoryUserDataHashKey(userData)); m_data->m_userDataMap.remove(userDataId); } break; } default: { //b3Warning("Unknown server status type"); } }; }
void PhysicsDirect::postProcessStatus(const struct SharedMemoryStatus& serverCmd) { switch (serverCmd.m_type) { case CMD_REQUEST_RAY_CAST_INTERSECTIONS_COMPLETED: { if (m_data->m_verboseOutput) { b3Printf("Raycast completed"); } m_data->m_raycastHits.clear(); for (int i=0;i<serverCmd.m_raycastHits.m_numRaycastHits;i++) { m_data->m_raycastHits.push_back(serverCmd.m_raycastHits.m_rayHits[i]); } break; } case CMD_REQUEST_VR_EVENTS_DATA_COMPLETED: { if (m_data->m_verboseOutput) { b3Printf("Request VR Events completed"); } m_data->m_cachedVREvents.resize(serverCmd.m_sendVREvents.m_numVRControllerEvents); for (int i=0;i< serverCmd.m_sendVREvents.m_numVRControllerEvents;i++) { m_data->m_cachedVREvents[i] = serverCmd.m_sendVREvents.m_controllerEvents[i]; } break; } case CMD_REQUEST_KEYBOARD_EVENTS_DATA_COMPLETED: { if (m_data->m_verboseOutput) { b3Printf("Request keyboard events completed"); } m_data->m_cachedKeyboardEvents.resize(serverCmd.m_sendKeyboardEvents.m_numKeyboardEvents); for (int i=0;i<serverCmd.m_sendKeyboardEvents.m_numKeyboardEvents;i++) { m_data->m_cachedKeyboardEvents[i] = serverCmd.m_sendKeyboardEvents.m_keyboardEvents[i]; } break; } case CMD_REQUEST_MOUSE_EVENTS_DATA_COMPLETED: { B3_PROFILE("CMD_REQUEST_MOUSE_EVENTS_DATA_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Request mouse events completed"); } m_data->m_cachedMouseEvents.resize(serverCmd.m_sendMouseEvents.m_numMouseEvents); for (int i=0;i<serverCmd.m_sendMouseEvents.m_numMouseEvents;i++) { m_data->m_cachedMouseEvents[i] = serverCmd.m_sendMouseEvents.m_mouseEvents[i]; } break; } case CMD_REQUEST_INTERNAL_DATA_COMPLETED: { if (serverCmd.m_numDataStreamBytes) { int numStreamBytes = serverCmd.m_numDataStreamBytes; m_data->m_serverDNA.resize(numStreamBytes); for (int i = 0; i < numStreamBytes; i++) { m_data->m_serverDNA[i] = m_data->m_bulletStreamDataServerToClient[i]; } } break; } case CMD_RESET_SIMULATION_COMPLETED: { resetData(); break; } case CMD_USER_CONSTRAINT_INFO_COMPLETED: case CMD_USER_CONSTRAINT_COMPLETED: { int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.insert(cid,serverCmd.m_userConstraintResultArgs); break; } case CMD_REMOVE_USER_CONSTRAINT_COMPLETED: { int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.remove(cid); break; } case CMD_REMOVE_BODY_FAILED: { b3Warning("Remove body failed\n"); break; } case CMD_REMOVE_BODY_COMPLETED: { for (int i=0;i<serverCmd.m_removeObjectArgs.m_numBodies;i++) { int bodyUniqueId = serverCmd.m_removeObjectArgs.m_bodyUniqueIds[i]; removeCachedBody(bodyUniqueId); } for (int i=0;i<serverCmd.m_removeObjectArgs.m_numUserConstraints;i++) { int key = serverCmd.m_removeObjectArgs.m_userConstraintUniqueIds[i]; m_data->m_userConstraintInfoMap.remove(key); } break; } case CMD_CHANGE_USER_CONSTRAINT_COMPLETED: { int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; b3UserConstraint* userConstraintPtr = m_data->m_userConstraintInfoMap[cid]; if (userConstraintPtr) { const b3UserConstraint* serverConstraint = &serverCmd.m_userConstraintResultArgs; if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_PIVOT_IN_B) { userConstraintPtr->m_childFrame[0] = serverConstraint->m_childFrame[0]; userConstraintPtr->m_childFrame[1] = serverConstraint->m_childFrame[1]; userConstraintPtr->m_childFrame[2] = serverConstraint->m_childFrame[2]; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_FRAME_ORN_IN_B) { userConstraintPtr->m_childFrame[3] = serverConstraint->m_childFrame[3]; userConstraintPtr->m_childFrame[4] = serverConstraint->m_childFrame[4]; userConstraintPtr->m_childFrame[5] = serverConstraint->m_childFrame[5]; userConstraintPtr->m_childFrame[6] = serverConstraint->m_childFrame[6]; } if (serverCmd.m_updateFlags & USER_CONSTRAINT_CHANGE_MAX_FORCE) { userConstraintPtr->m_maxAppliedForce = serverConstraint->m_maxAppliedForce; } } break; } case CMD_SYNC_BODY_INFO_COMPLETED: case CMD_MJCF_LOADING_COMPLETED: case CMD_SDF_LOADING_COMPLETED: { //we'll stream further info from the physics server //so serverCmd will be invalid, make a copy int numConstraints = serverCmd.m_sdfLoadedArgs.m_numUserConstraints; for (int i=0;i<numConstraints;i++) { int constraintUid = serverCmd.m_sdfLoadedArgs.m_userConstraintUniqueIds[i]; SharedMemoryCommand infoRequestCommand; infoRequestCommand.m_type = CMD_USER_CONSTRAINT; infoRequestCommand.m_updateFlags = USER_CONSTRAINT_REQUEST_INFO; infoRequestCommand.m_userConstraintArguments.m_userConstraintUniqueId = constraintUid; SharedMemoryStatus infoStatus; bool hasStatus = m_data->m_commandProcessor->processCommand(infoRequestCommand, infoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); b3Clock clock; double startTime = clock.getTimeInSeconds(); double timeOutInSeconds = m_data->m_timeOutInSeconds; while ((!hasStatus) && (clock.getTimeInSeconds()-startTime < timeOutInSeconds)) { hasStatus = m_data->m_commandProcessor->receiveStatus(infoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); } if (hasStatus) { int cid = infoStatus.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.insert(cid,infoStatus.m_userConstraintResultArgs); } } int numBodies = serverCmd.m_sdfLoadedArgs.m_numBodies; for (int i = 0; i<numBodies; i++) { int bodyUniqueId = serverCmd.m_sdfLoadedArgs.m_bodyUniqueIds[i]; SharedMemoryCommand infoRequestCommand; infoRequestCommand.m_type = CMD_REQUEST_BODY_INFO; infoRequestCommand.m_sdfRequestInfoArgs.m_bodyUniqueId = bodyUniqueId; SharedMemoryStatus infoStatus; bool hasStatus = m_data->m_commandProcessor->processCommand(infoRequestCommand, infoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); b3Clock clock; double startTime = clock.getTimeInSeconds(); double timeOutInSeconds = m_data->m_timeOutInSeconds; while ((!hasStatus) && (clock.getTimeInSeconds()-startTime < timeOutInSeconds)) { hasStatus = m_data->m_commandProcessor->receiveStatus(infoStatus, &m_data->m_bulletStreamDataServerToClient[0], SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE); } if (hasStatus) { processBodyJointInfo(bodyUniqueId, infoStatus); } } break; } case CMD_CREATE_MULTI_BODY_COMPLETED: case CMD_URDF_LOADING_COMPLETED: { if (serverCmd.m_numDataStreamBytes > 0) { int bodyIndex = serverCmd.m_dataStreamArguments.m_bodyUniqueId; processBodyJointInfo(bodyIndex, serverCmd); } break; } case CMD_BULLET_LOADING_FAILED: { b3Warning("Couldn't load .bullet file"); break; } case CMD_BULLET_LOADING_COMPLETED: { break; } case CMD_REQUEST_OPENGL_VISUALIZER_CAMERA_COMPLETED: { break; } case CMD_REQUEST_OPENGL_VISUALIZER_CAMERA_FAILED: { b3Warning("requestOpenGLVisualizeCamera failed"); break; } case CMD_REMOVE_USER_CONSTRAINT_FAILED: { b3Warning("removeConstraint failed"); break; } case CMD_CHANGE_USER_CONSTRAINT_FAILED: { b3Warning("changeConstraint failed"); break; } case CMD_USER_CONSTRAINT_FAILED: { b3Warning("createConstraint failed"); break; } case CMD_CREATE_COLLISION_SHAPE_FAILED: { b3Warning("createCollisionShape failed"); break; } case CMD_CREATE_COLLISION_SHAPE_COMPLETED: { break; } case CMD_CREATE_VISUAL_SHAPE_FAILED: { b3Warning("createVisualShape failed"); break; } case CMD_CREATE_VISUAL_SHAPE_COMPLETED: { break; } case CMD_CREATE_MULTI_BODY_FAILED: { b3Warning("createMultiBody failed"); break; } case CMD_REQUEST_COLLISION_INFO_COMPLETED: { break; } case CMD_REQUEST_COLLISION_INFO_FAILED: { b3Warning("Request getCollisionInfo failed"); break; } default: { //b3Warning("Unknown server status type"); } }; }