summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <erwin.coumans@gmail.com>2020-07-17 15:04:54 -0700
committerErwin Coumans <erwin.coumans@gmail.com>2020-07-17 15:04:54 -0700
commit1de2269b6e5da3697a1dcfcfd616c1743e04b4ac (patch)
tree94b5126e051e5c397bb20bd81a4274a604a4bc50
parentc9ca9cb6c65eaf511787d344ab3f65f49965941e (diff)
downloadbullet3-1de2269b6e5da3697a1dcfcfd616c1743e04b4ac.tar.gz
add removeState in C++ API, see also Issue https://github.com/bulletphysics/bullet3/issues/2935
-rw-r--r--examples/SharedMemory/PhysicsServerCommandProcessor.cpp6
-rw-r--r--examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.cpp21
-rw-r--r--examples/SharedMemory/b3RobotSimulatorClientAPI_NoDirect.h1
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
{