mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-13 21:30:09 +00:00
example for fileIOPlugin.py loading SDF and its assets from a single zipfile,
also show how to disable file caching (used in the fileIOPlugin)
This commit is contained in:
parent
9e99f5cdbc
commit
f9f8d0fbb0
@ -22,7 +22,7 @@ struct CommonFileIOInterface
|
|||||||
virtual bool findResourcePath(const char* fileName, char* resourcePathOut, int resourcePathMaxNumBytes)=0;
|
virtual bool findResourcePath(const char* fileName, char* resourcePathOut, int resourcePathMaxNumBytes)=0;
|
||||||
virtual char* readLine(int fileHandle, char* destBuffer, int numBytes)=0;
|
virtual char* readLine(int fileHandle, char* destBuffer, int numBytes)=0;
|
||||||
virtual int getFileSize(int fileHandle)=0;
|
virtual int getFileSize(int fileHandle)=0;
|
||||||
|
virtual void enableFileCaching(bool enable) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //COMMON_FILE_IO_INTERFACE_H
|
#endif //COMMON_FILE_IO_INTERFACE_H
|
@ -8004,6 +8004,7 @@ bool PhysicsServerCommandProcessor::processSendPhysicsParametersCommand(const st
|
|||||||
if (clientCmd.m_updateFlags & SIM_PARAM_ENABLE_FILE_CACHING)
|
if (clientCmd.m_updateFlags & SIM_PARAM_ENABLE_FILE_CACHING)
|
||||||
{
|
{
|
||||||
b3EnableFileCaching(clientCmd.m_physSimParamArgs.m_enableFileCaching);
|
b3EnableFileCaching(clientCmd.m_physSimParamArgs.m_enableFileCaching);
|
||||||
|
m_data->m_pluginManager.getFileIOInterface()->enableFileCaching(clientCmd.m_physSimParamArgs.m_enableFileCaching!=0);
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
|
@ -283,6 +283,11 @@ struct InMemoryFileIO : public CommonFileIOInterface
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void enableFileCaching(bool enable)
|
||||||
|
{
|
||||||
|
(void)enable;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct WrapperFileIO : public CommonFileIOInterface
|
struct WrapperFileIO : public CommonFileIOInterface
|
||||||
@ -292,10 +297,12 @@ struct WrapperFileIO : public CommonFileIOInterface
|
|||||||
|
|
||||||
WrapperFileHandle m_wrapperFileHandles[B3_MAX_FILEIO_INTERFACES];
|
WrapperFileHandle m_wrapperFileHandles[B3_MAX_FILEIO_INTERFACES];
|
||||||
InMemoryFileIO m_cachedFiles;
|
InMemoryFileIO m_cachedFiles;
|
||||||
|
bool m_enableFileCaching;
|
||||||
|
|
||||||
WrapperFileIO()
|
WrapperFileIO()
|
||||||
:CommonFileIOInterface(0,0),
|
:CommonFileIOInterface(0,0),
|
||||||
m_numWrapperInterfaces(0)
|
m_numWrapperInterfaces(0),
|
||||||
|
m_enableFileCaching(true)
|
||||||
{
|
{
|
||||||
for (int i=0;i<B3_MAX_FILEIO_INTERFACES;i++)
|
for (int i=0;i<B3_MAX_FILEIO_INTERFACES;i++)
|
||||||
{
|
{
|
||||||
@ -406,7 +413,10 @@ struct WrapperFileIO : public CommonFileIOInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
//potentially register a zero byte file, or files that only can be read partially
|
//potentially register a zero byte file, or files that only can be read partially
|
||||||
m_cachedFiles.registerFile(fileName,buffer, fileSize);
|
if (m_enableFileCaching)
|
||||||
|
{
|
||||||
|
m_cachedFiles.registerFile(fileName, buffer, fileSize);
|
||||||
|
}
|
||||||
childFileIO->fileClose(childHandle);
|
childFileIO->fileClose(childHandle);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -525,6 +535,15 @@ struct WrapperFileIO : public CommonFileIOInterface
|
|||||||
return numBytes;
|
return numBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void enableFileCaching(bool enable)
|
||||||
|
{
|
||||||
|
m_enableFileCaching = enable;
|
||||||
|
if (!enable)
|
||||||
|
{
|
||||||
|
m_cachedFiles.clearCache();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -252,5 +252,10 @@ struct ZipFileIO : public CommonFileIOInterface
|
|||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void enableFileCaching(bool enable)
|
||||||
|
{
|
||||||
|
(void)enable;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -186,6 +186,11 @@ struct b3BulletDefaultFileIO : public CommonFileIOInterface
|
|||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void enableFileCaching(bool enable)
|
||||||
|
{
|
||||||
|
(void) enable;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //B3_BULLET_DEFAULT_FILE_IO_H
|
#endif //B3_BULLET_DEFAULT_FILE_IO_H
|
||||||
|
20
examples/pybullet/examples/fileIOPlugin.py
Normal file
20
examples/pybullet/examples/fileIOPlugin.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import pybullet as p
|
||||||
|
import time
|
||||||
|
|
||||||
|
p.connect(p.GUI)
|
||||||
|
fileIO = p.loadPlugin("fileIOPlugin")
|
||||||
|
if (fileIO>=0):
|
||||||
|
p.executePluginCommand(fileIO, "pickup.zip", [p.AddFileIOAction, p.ZipFileIO])
|
||||||
|
objs= p.loadSDF("pickup/model.sdf")
|
||||||
|
dobot =objs[0]
|
||||||
|
p.changeVisualShape(dobot,-1,rgbaColor=[1,1,1,1])
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("fileIOPlugin is disabled.")
|
||||||
|
|
||||||
|
|
||||||
|
p.setPhysicsEngineParameter(enableFileCaching=False)
|
||||||
|
|
||||||
|
while (1):
|
||||||
|
p.stepSimulation()
|
||||||
|
time.sleep(1./240.)
|
BIN
examples/pybullet/examples/pickup.zip
Normal file
BIN
examples/pybullet/examples/pickup.zip
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user