From 1de2269b6e5da3697a1dcfcfd616c1743e04b4ac Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Fri, 17 Jul 2020 15:04:54 -0700 Subject: add removeState in C++ API, see also Issue https://github.com/bulletphysics/bullet3/issues/2935 --- .../SharedMemory/PhysicsServerCommandProcessor.cpp | 6 ++++++ .../b3RobotSimulatorClientAPI_NoDirect.cpp | 21 +++++++++++++++++++++ .../b3RobotSimulatorClientAPI_NoDirect.h | 1 + 3 files changed, 28 insertions(+) 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 { -- cgit v1.2.1