make pybullet.getMeshData work for softbody
This commit is contained in:
@@ -53,8 +53,8 @@ struct PhysicsClientSharedMemoryInternalData
|
||||
btAlignedObjectArray<b3VisualShapeData> m_cachedVisualShapes;
|
||||
btAlignedObjectArray<b3CollisionShapeData> m_cachedCollisionShapes;
|
||||
|
||||
b3MeshData m_cachedMeshData;
|
||||
btAlignedObjectArray<double> m_cachedVertexPositions;
|
||||
b3MeshData m_cachedMeshData;
|
||||
btAlignedObjectArray<b3MeshVertex> m_cachedVertexPositions;
|
||||
|
||||
btAlignedObjectArray<b3VRControllerEvent> m_cachedVREvents;
|
||||
btAlignedObjectArray<b3KeyboardEvent> m_cachedKeyboardEvents;
|
||||
@@ -100,6 +100,8 @@ struct PhysicsClientSharedMemoryInternalData
|
||||
m_verboseOutput(false),
|
||||
m_timeOutInSeconds(1e30)
|
||||
{
|
||||
m_cachedMeshData.m_numVertices = 0;
|
||||
m_cachedMeshData.m_vertices = 0;
|
||||
}
|
||||
|
||||
void processServerStatus();
|
||||
@@ -1035,15 +1037,24 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
|
||||
b3Warning("Camera image FAILED\n");
|
||||
break;
|
||||
}
|
||||
case CMD_REQUEST_MESH_DATA_COMPLETED:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case CMD_REQUEST_MESH_DATA_FAILED:
|
||||
{
|
||||
b3Warning("Request mesh data failed");
|
||||
break;
|
||||
}
|
||||
case CMD_REQUEST_MESH_DATA_COMPLETED:
|
||||
{
|
||||
m_data->m_cachedVertexPositions.resize(serverCmd.m_sendMeshDataArgs.m_startingVertex + serverCmd.m_sendMeshDataArgs.m_numVerticesCopied);
|
||||
btVector3* verticesReceived = (btVector3*)m_data->m_testBlock1->m_bulletStreamDataServerToClientRefactor;
|
||||
for (int i = 0; i < serverCmd.m_sendMeshDataArgs.m_numVerticesCopied; i++)
|
||||
{
|
||||
m_data->m_cachedVertexPositions[i + serverCmd.m_sendMeshDataArgs.m_startingVertex].x = verticesReceived[i].x();
|
||||
m_data->m_cachedVertexPositions[i + serverCmd.m_sendMeshDataArgs.m_startingVertex].y = verticesReceived[i].y();
|
||||
m_data->m_cachedVertexPositions[i + serverCmd.m_sendMeshDataArgs.m_startingVertex].z = verticesReceived[i].z();
|
||||
m_data->m_cachedVertexPositions[i + serverCmd.m_sendMeshDataArgs.m_startingVertex].w = verticesReceived[i].w();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CMD_REQUEST_MESH_DATA_FAILED:
|
||||
{
|
||||
b3Warning("Request mesh data failed");
|
||||
break;
|
||||
}
|
||||
case CMD_CALCULATED_INVERSE_DYNAMICS_COMPLETED:
|
||||
{
|
||||
break;
|
||||
@@ -1770,15 +1781,15 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
|
||||
}
|
||||
}
|
||||
|
||||
if(serverCmd.m_type == CMD_REQUEST_MESH_DATA_COMPLETED)
|
||||
{
|
||||
if (serverCmd.m_type == CMD_REQUEST_MESH_DATA_COMPLETED)
|
||||
{
|
||||
B3_PROFILE("CMD_REQUEST_MESH_DATA_COMPLETED");
|
||||
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
||||
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
||||
|
||||
if (serverCmd.m_sendMeshDataArgs.m_numVerticesRemaining > 0 && serverCmd.m_sendMeshDataArgs.m_numVerticesCopied)
|
||||
if (serverCmd.m_sendMeshDataArgs.m_numVerticesRemaining > 0 && serverCmd.m_sendMeshDataArgs.m_numVerticesCopied)
|
||||
{
|
||||
command.m_type = CMD_REQUEST_MESH_DATA;
|
||||
command.m_requestMeshDataArgs.m_startingVertex=
|
||||
command.m_requestMeshDataArgs.m_startingVertex =
|
||||
serverCmd.m_sendMeshDataArgs.m_startingVertex +
|
||||
serverCmd.m_sendMeshDataArgs.m_numVerticesCopied;
|
||||
submitClientCommand(command);
|
||||
@@ -1786,9 +1797,9 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus()
|
||||
}
|
||||
else
|
||||
{
|
||||
m_data->m_cachedMeshData.m_numVertices =serverCmd.m_sendMeshDataArgs.m_startingVertex +serverCmd.m_sendMeshDataArgs.m_numVerticesCopied;
|
||||
m_data->m_cachedMeshData.m_numVertices = serverCmd.m_sendMeshDataArgs.m_startingVertex + serverCmd.m_sendMeshDataArgs.m_numVerticesCopied;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((serverCmd.m_type == CMD_DEBUG_LINES_COMPLETED) &&
|
||||
(serverCmd.m_sendDebugLinesArgs.m_numRemainingDebugLines > 0))
|
||||
@@ -1972,9 +1983,13 @@ void PhysicsClientSharedMemory::getCachedCollisionShapeInformation(struct b3Coll
|
||||
collisionShapesInfo->m_collisionShapeData = collisionShapesInfo->m_numCollisionShapes ? &m_data->m_cachedCollisionShapes[0] : 0;
|
||||
}
|
||||
|
||||
|
||||
void PhysicsClientSharedMemory::getCachedMeshData(struct b3MeshData* meshData){
|
||||
*meshData = m_data->m_cachedMeshData;
|
||||
void PhysicsClientSharedMemory::getCachedMeshData(struct b3MeshData* meshData)
|
||||
{
|
||||
m_data->m_cachedMeshData.m_numVertices = m_data->m_cachedVertexPositions.size();
|
||||
|
||||
m_data->m_cachedMeshData.m_vertices = m_data->m_cachedMeshData.m_numVertices ? &m_data->m_cachedVertexPositions[0] : 0;
|
||||
|
||||
*meshData = m_data->m_cachedMeshData;
|
||||
}
|
||||
|
||||
const float* PhysicsClientSharedMemory::getDebugLinesFrom() const
|
||||
|
||||
Reference in New Issue
Block a user