From 37cfce99b2af99b6523cfbc7331c980147343b09 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Sat, 23 Sep 2017 07:52:10 -0700 Subject: [PATCH] add arguments to plugin system --- Extras/BulletRobotics/CMakeLists.txt | 3 +++ examples/SharedMemory/b3PluginManager.cpp | 2 +- examples/SharedMemory/plugins/b3PluginAPI.h | 6 +++--- examples/SharedMemory/plugins/testPlugin/testplugin.cpp | 3 ++- examples/SharedMemory/plugins/testPlugin/testplugin.h | 2 +- examples/pybullet/pybullet.c | 6 +++--- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Extras/BulletRobotics/CMakeLists.txt b/Extras/BulletRobotics/CMakeLists.txt index a8d238197..3c1b66f53 100644 --- a/Extras/BulletRobotics/CMakeLists.txt +++ b/Extras/BulletRobotics/CMakeLists.txt @@ -32,6 +32,9 @@ SET(BulletRobotics_SRCS ../../examples/SharedMemory/PhysicsDirectC_API.h ../../examples/SharedMemory/PhysicsServerCommandProcessor.cpp ../../examples/SharedMemory/PhysicsServerCommandProcessor.h + ../../examples/SharedMemory/b3PluginManager.cpp + ../../examples/SharedMemory/b3PluginManager.h + ../../examples/SharedMemory/PhysicsClientSharedMemory.cpp ../../examples/SharedMemory/PhysicsClientSharedMemory.h ../../examples/SharedMemory/PhysicsClientSharedMemory_C_API.cpp diff --git a/examples/SharedMemory/b3PluginManager.cpp b/examples/SharedMemory/b3PluginManager.cpp index 328a0426c..2590a6a96 100644 --- a/examples/SharedMemory/b3PluginManager.cpp +++ b/examples/SharedMemory/b3PluginManager.cpp @@ -145,7 +145,7 @@ int b3PluginManager::executePluginCommand(int pluginUniqueId, const char* argume b3PluginHandle* plugin = m_data->m_plugins.getHandle(pluginUniqueId); if (plugin) { - result = plugin->m_executeCommandFunc(); + result = plugin->m_executeCommandFunc(arguments); } return result; } diff --git a/examples/SharedMemory/plugins/b3PluginAPI.h b/examples/SharedMemory/plugins/b3PluginAPI.h index 7ae6eb337..408517ddb 100644 --- a/examples/SharedMemory/plugins/b3PluginAPI.h +++ b/examples/SharedMemory/plugins/b3PluginAPI.h @@ -12,8 +12,8 @@ #if defined(_WIN32) #define B3_API_ENTRY -#define B3_API_CALL __stdcall -#define B3_CALLBACK __stdcall +#define B3_API_CALL __cdecl +#define B3_CALLBACK __cdecl #else #define B3_API_ENTRY #define B3_API_CALL @@ -28,7 +28,7 @@ extern "C" { /* Plugin API */ typedef B3_API_ENTRY int (B3_API_CALL * PFN_INIT)(); typedef B3_API_ENTRY void (B3_API_CALL * PFN_EXIT)(); - typedef B3_API_ENTRY int (B3_API_CALL * PFN_EXECUTE)(); + typedef B3_API_ENTRY int (B3_API_CALL * PFN_EXECUTE)(const char* arguments); #ifdef __cplusplus } diff --git a/examples/SharedMemory/plugins/testPlugin/testplugin.cpp b/examples/SharedMemory/plugins/testPlugin/testplugin.cpp index 569632c10..41482212a 100644 --- a/examples/SharedMemory/plugins/testPlugin/testplugin.cpp +++ b/examples/SharedMemory/plugins/testPlugin/testplugin.cpp @@ -10,8 +10,9 @@ B3_SHARED_API int initPlugin() return SHARED_MEMORY_MAGIC_NUMBER; } -B3_SHARED_API int executePluginCommand() +B3_SHARED_API int executePluginCommand(const char* arguments) { + printf("arguments:%s\n",arguments); return 42; } diff --git a/examples/SharedMemory/plugins/testPlugin/testplugin.h b/examples/SharedMemory/plugins/testPlugin/testplugin.h index 1c4420a96..2b4809617 100644 --- a/examples/SharedMemory/plugins/testPlugin/testplugin.h +++ b/examples/SharedMemory/plugins/testPlugin/testplugin.h @@ -10,7 +10,7 @@ extern "C" B3_SHARED_API int initPlugin(); B3_SHARED_API void exitPlugin(); -B3_SHARED_API int executePluginCommand(); +B3_SHARED_API int executePluginCommand(const char* arguments); #ifdef __cplusplus }; diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c index 5cd4c26f5..ef1aad238 100644 --- a/examples/pybullet/pybullet.c +++ b/examples/pybullet/pybullet.c @@ -6726,6 +6726,9 @@ static PyObject* pybullet_executePluginCommand(PyObject* self, int pluginUniqueId = -1; int commandUniqueId = -1; char* arguments = 0; + b3SharedMemoryCommandHandle command=0; + b3SharedMemoryStatusHandle statusHandle=0; + int statusType = -1; b3PhysicsClientHandle sm = 0; static char* kwlist[] = { "pluginUniqueId", "commandUniqueId", "arguments", "physicsClientId", NULL }; @@ -6741,9 +6744,6 @@ static PyObject* pybullet_executePluginCommand(PyObject* self, return NULL; } - b3SharedMemoryCommandHandle command=0; - b3SharedMemoryStatusHandle statusHandle=0; - int statusType = -1; command = b3CreateCustomCommand(sm); b3CustomCommandExecutePluginCommand(command, pluginUniqueId, commandUniqueId, arguments);