mirror of
https://github.com/bulletphysics/bullet3
synced 2025-01-18 21:10:05 +00:00
9698c3d600
postpone the 'loadPlugin' for static eglPlugin, so that the init and exit happen in the same thread. When you don't call unloadPlugin, the program may crash when exiting in SHARED_MEMORY_SERVER mode.
39 lines
1.4 KiB
C++
39 lines
1.4 KiB
C++
#ifndef B3_PLUGIN_MANAGER_H
|
|
#define B3_PLUGIN_MANAGER_H
|
|
|
|
#include "plugins/b3PluginAPI.h"
|
|
|
|
enum b3PluginManagerTickMode
|
|
{
|
|
B3_PRE_TICK_MODE=1,
|
|
B3_POST_TICK_MODE,
|
|
B3_PROCESS_CLIENT_COMMANDS_TICK,
|
|
};
|
|
|
|
class b3PluginManager
|
|
{
|
|
struct b3PluginManagerInternalData* m_data;
|
|
|
|
public:
|
|
|
|
b3PluginManager(class PhysicsCommandProcessorInterface* physSdk);
|
|
virtual ~b3PluginManager();
|
|
|
|
int loadPlugin(const char* pluginPath, const char* postFixStr ="");
|
|
void unloadPlugin(int pluginUniqueId);
|
|
int executePluginCommand(int pluginUniqueId, const struct b3PluginArguments* arguments);
|
|
void addEvents(const struct b3VRControllerEvent* vrControllerEvents, int numVRControllerEvents, const struct b3KeyboardEvent* keyEvents, int numKeyEvents, const struct b3MouseEvent* mouseEvents, int numMouseEvents);
|
|
void clearEvents();
|
|
|
|
void addNotification(const struct b3Notification& notification);
|
|
void reportNotifications();
|
|
|
|
void tickPlugins(double timeStep, b3PluginManagerTickMode tickMode);
|
|
|
|
int registerStaticLinkedPlugin(const char* pluginPath, PFN_INIT initFunc, PFN_EXIT exitFunc, PFN_EXECUTE executeCommandFunc, PFN_TICK preTickFunc, PFN_TICK postTickFunc, PFN_GET_RENDER_INTERFACE getRendererFunc, PFN_TICK processClientCommandsFunc, bool initPlugin=true);
|
|
void selectPluginRenderer(int pluginUniqueId);
|
|
UrdfRenderingInterface* getRenderInterface();
|
|
};
|
|
|
|
#endif //B3_PLUGIN_MANAGER_H
|