First pass of load files through an interface (to allow loading from memory, zip file etc). So instead of posix fopen/fread, using CommonFileIOInterface.
A fileIO plugin can override custom file IO operations. As a small test, load files from a zipfile in memory. Default fileIO implementation is in examples/Utils/b3BulletDefaultFileIO.h Affects URDF, SDF, MJCF, Wavefront OBJ, STL, DAE, images.
This commit is contained in:
@@ -10,6 +10,37 @@ enum b3PluginManagerTickMode
|
||||
B3_PROCESS_CLIENT_COMMANDS_TICK,
|
||||
};
|
||||
|
||||
struct b3PluginFunctions
|
||||
{
|
||||
//required
|
||||
PFN_INIT m_initFunc;
|
||||
PFN_EXIT m_exitFunc;
|
||||
PFN_EXECUTE m_executeCommandFunc;
|
||||
|
||||
//optional
|
||||
PFN_TICK m_preTickFunc;
|
||||
PFN_TICK m_postTickFunc;
|
||||
PFN_GET_RENDER_INTERFACE m_getRendererFunc;
|
||||
PFN_TICK m_processClientCommandsFunc;
|
||||
PFN_TICK m_processNotificationsFunc;
|
||||
PFN_GET_COLLISION_INTERFACE m_getCollisionFunc;
|
||||
PFN_GET_FILEIO_INTERFACE m_fileIoFunc;
|
||||
|
||||
b3PluginFunctions(PFN_INIT initFunc, PFN_EXIT exitFunc, PFN_EXECUTE executeCommandFunc)
|
||||
:m_initFunc(initFunc),
|
||||
m_exitFunc(exitFunc),
|
||||
m_executeCommandFunc(executeCommandFunc),
|
||||
m_preTickFunc(0),
|
||||
m_postTickFunc(0),
|
||||
m_getRendererFunc(0),
|
||||
m_processClientCommandsFunc(0),
|
||||
m_processNotificationsFunc(0),
|
||||
m_getCollisionFunc(0),
|
||||
m_fileIoFunc(0)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class b3PluginManager
|
||||
{
|
||||
struct b3PluginManagerInternalData* m_data;
|
||||
@@ -29,11 +60,14 @@ public:
|
||||
|
||||
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, PFN_GET_COLLISION_INTERFACE getCollisionFunc, bool initPlugin = true);
|
||||
int registerStaticLinkedPlugin(const char* pluginPath, b3PluginFunctions& functions, bool initPlugin = true);
|
||||
|
||||
void selectPluginRenderer(int pluginUniqueId);
|
||||
struct UrdfRenderingInterface* getRenderInterface();
|
||||
|
||||
void selectFileIOPlugin(int pluginUniqueId);
|
||||
struct CommonFileIOInterface* getFileIOInterface();
|
||||
|
||||
void selectCollisionPlugin(int pluginUniqueId);
|
||||
struct b3PluginCollisionInterface* getCollisionInterface();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user