diff options
author | Erwin Coumans <erwin.coumans@gmail.com> | 2020-07-17 15:04:54 -0700 |
---|---|---|
committer | Erwin Coumans <erwin.coumans@gmail.com> | 2020-07-17 15:04:54 -0700 |
commit | 1de2269b6e5da3697a1dcfcfd616c1743e04b4ac (patch) | |
tree | 94b5126e051e5c397bb20bd81a4274a604a4bc50 | |
parent | c9ca9cb6c65eaf511787d344ab3f65f49965941e (diff) | |
download | bullet3-1de2269b6e5da3697a1dcfcfd616c1743e04b4ac.tar.gz |
add removeState in C++ API, see also Issue https://github.com/bulletphysics/bullet3/issues/2935
3 files changed, 28 insertions, 0 deletions
diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 5760c1e5b..cc3fb5c9d 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -2038,6 +2038,12 @@ PhysicsServerCommandProcessor::~PhysicsServerCommandProcessor() if (m_data->m_threadPool) delete m_data->m_threadPool; + for (int i = 0; i < m_data->m_savedStates.size(); i++) + { + delete m_data->m_savedStates[i].m_bulletFile; + delete m_data->m_savedStates[i].m_serializer; + } + delete m_data; } diff --git a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp index 7398d930b..e7de912e6 100644 --- a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp +++ b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp @@ -2546,6 +2546,27 @@ void b3RobotSimulatorClientAPI_NoDirect::restoreStateFromMemory(int stateId) statusType = b3GetStatusType(statusHandle); } +void b3RobotSimulatorClientAPI_NoDirect::removeState(int stateUniqueId) +{ + b3PhysicsClientHandle sm = m_data->m_physicsClientHandle; + if (sm == 0) + { + b3Warning("Not connected"); + return; + } + + if (stateUniqueId >= 0) + { + b3SharedMemoryStatusHandle statusHandle; + int statusType; + if (b3CanSubmitCommand(sm)) + { + statusHandle = b3SubmitClientCommandAndWaitStatus(sm, b3InitRemoveStateCommand(sm, stateUniqueId)); + statusType = b3GetStatusType(statusHandle); + } + } +} + bool b3RobotSimulatorClientAPI_NoDirect::getVisualShapeData(int bodyUniqueId, b3VisualShapeInformation& visualShapeInfo) { b3PhysicsClientHandle sm = m_data->m_physicsClientHandle; diff --git a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h index 1c92746b4..5de719669 100644 --- a/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h +++ b/examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h @@ -889,6 +889,7 @@ public: int saveStateToMemory(); void restoreStateFromMemory(int stateId); + void removeState(int stateUniqueId); int getAPIVersion() const { |