From 812c229736dae235faeae900decdef0e561d4175 Mon Sep 17 00:00:00 2001 From: YunfeiBai Date: Sun, 24 Jun 2018 17:06:16 -0700 Subject: [PATCH] Remove the pdController when maxForce = 0 --- examples/SharedMemory/PhysicsServerCommandProcessor.cpp | 6 +++++- .../plugins/pdControlPlugin/pdControlPlugin.cpp | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index ee134e9cd..0dd61fcad 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -5189,7 +5189,6 @@ bool PhysicsServerCommandProcessor::processSendDesiredStateCommand(const struct } b3PluginArguments args; - args.m_ints[0] = eSetPDControl; args.m_ints[1] = bodyUniqueId; //find the joint motors and apply the desired velocity and maximum force/torque { @@ -5242,6 +5241,11 @@ bool PhysicsServerCommandProcessor::processSendDesiredStateCommand(const struct args.m_ints[2] = link; args.m_numInts = 3; args.m_numFloats = 5; + + args.m_ints[0] = eSetPDControl; + if (args.m_floats[4] < B3_EPSILON) { + args.m_ints[0] = eRemovePDControl; + } m_data->m_pluginManager.executePluginCommand(m_data->m_pdControlPlugin, &args); } } diff --git a/examples/SharedMemory/plugins/pdControlPlugin/pdControlPlugin.cpp b/examples/SharedMemory/plugins/pdControlPlugin/pdControlPlugin.cpp index e9d23fbd2..adef863a4 100644 --- a/examples/SharedMemory/plugins/pdControlPlugin/pdControlPlugin.cpp +++ b/examples/SharedMemory/plugins/pdControlPlugin/pdControlPlugin.cpp @@ -107,7 +107,6 @@ B3_SHARED_API int executePluginCommand_pdControlPlugin(struct b3PluginContext* c if (arguments->m_numInts != 3) return -1; - switch (arguments->m_ints[0]) { case eSetPDControl: