diff options
author | erwincoumans <erwin.coumans@gmail.com> | 2023-02-24 10:54:03 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-24 10:54:03 -0800 |
commit | 0e59474e1cf1fd69e3ca512826cfbe15cd6a9cec (patch) | |
tree | 593ed49f85b6478f536cfe9118d1f2e99597f3bc /examples/SharedMemory/PhysicsClientSharedMemory.cpp | |
parent | c037d9ba279d74c7e7437a700763892a6ba75760 (diff) | |
parent | e323404ac393aeb834a3f8f21549e119c76b67ff (diff) | |
download | bullet3-0e59474e1cf1fd69e3ca512826cfbe15cd6a9cec.tar.gz |
Merge pull request #4413 from aprilprojecteu/master
re-enable softbody/rigidbody contact report
Diffstat (limited to 'examples/SharedMemory/PhysicsClientSharedMemory.cpp')
-rw-r--r-- | examples/SharedMemory/PhysicsClientSharedMemory.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/examples/SharedMemory/PhysicsClientSharedMemory.cpp b/examples/SharedMemory/PhysicsClientSharedMemory.cpp index 3512fe3ef..1d8d966a7 100644 --- a/examples/SharedMemory/PhysicsClientSharedMemory.cpp +++ b/examples/SharedMemory/PhysicsClientSharedMemory.cpp @@ -54,6 +54,7 @@ struct PhysicsClientSharedMemoryInternalData btAlignedObjectArray<b3CollisionShapeData> m_cachedCollisionShapes; b3MeshData m_cachedMeshData; + b3TetraMeshData m_cachedTetraMeshData; btAlignedObjectArray<b3MeshVertex> m_cachedVertexPositions; btAlignedObjectArray<b3VRControllerEvent> m_cachedVREvents; @@ -1074,6 +1075,24 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() b3Warning("Request mesh data failed"); break; } + case CMD_REQUEST_TETRA_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_TETRA_MESH_DATA_FAILED: + { + b3Warning("Request tetra mesh data failed"); + break; + } case CMD_CALCULATED_INVERSE_DYNAMICS_COMPLETED: { break; @@ -2088,6 +2107,15 @@ void PhysicsClientSharedMemory::getCachedMeshData(struct b3MeshData* meshData) *meshData = m_data->m_cachedMeshData; } +void PhysicsClientSharedMemory::getCachedTetraMeshData(struct b3TetraMeshData* meshData) +{ + m_data->m_cachedTetraMeshData.m_numVertices = m_data->m_cachedVertexPositions.size(); + + m_data->m_cachedTetraMeshData.m_vertices = m_data->m_cachedTetraMeshData.m_numVertices ? &m_data->m_cachedVertexPositions[0] : 0; + + *meshData = m_data->m_cachedTetraMeshData; +} + const float* PhysicsClientSharedMemory::getDebugLinesFrom() const { if (m_data->m_debugLinesFrom.size()) |