mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-13 13:20:07 +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 char* readLine(int fileHandle, char* destBuffer, int numBytes)=0;
|
||||
virtual int getFileSize(int fileHandle)=0;
|
||||
|
||||
virtual void enableFileCaching(bool enable) = 0;
|
||||
};
|
||||
|
||||
#endif //COMMON_FILE_IO_INTERFACE_H
|
@ -8004,6 +8004,7 @@ bool PhysicsServerCommandProcessor::processSendPhysicsParametersCommand(const st
|
||||
if (clientCmd.m_updateFlags & SIM_PARAM_ENABLE_FILE_CACHING)
|
||||
{
|
||||
b3EnableFileCaching(clientCmd.m_physSimParamArgs.m_enableFileCaching);
|
||||
m_data->m_pluginManager.getFileIOInterface()->enableFileCaching(clientCmd.m_physSimParamArgs.m_enableFileCaching!=0);
|
||||
}
|
||||
|
||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||
|
@ -283,6 +283,11 @@ struct InMemoryFileIO : public CommonFileIOInterface
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual void enableFileCaching(bool enable)
|
||||
{
|
||||
(void)enable;
|
||||
}
|
||||
};
|
||||
|
||||
struct WrapperFileIO : public CommonFileIOInterface
|
||||
@ -292,10 +297,12 @@ struct WrapperFileIO : public CommonFileIOInterface
|
||||
|
||||
WrapperFileHandle m_wrapperFileHandles[B3_MAX_FILEIO_INTERFACES];
|
||||
InMemoryFileIO m_cachedFiles;
|
||||
bool m_enableFileCaching;
|
||||
|
||||
WrapperFileIO()
|
||||
:CommonFileIOInterface(0,0),
|
||||
m_numWrapperInterfaces(0)
|
||||
m_numWrapperInterfaces(0),
|
||||
m_enableFileCaching(true)
|
||||
{
|
||||
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
|
||||
m_cachedFiles.registerFile(fileName,buffer, fileSize);
|
||||
if (m_enableFileCaching)
|
||||
{
|
||||
m_cachedFiles.registerFile(fileName, buffer, fileSize);
|
||||
}
|
||||
childFileIO->fileClose(childHandle);
|
||||
break;
|
||||
}
|
||||
@ -525,6 +535,15 @@ struct WrapperFileIO : public CommonFileIOInterface
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
virtual void enableFileCaching(bool enable)
|
||||
{
|
||||
(void)enable;
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -186,6 +186,11 @@ struct b3BulletDefaultFileIO : public CommonFileIOInterface
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
virtual void enableFileCaching(bool enable)
|
||||
{
|
||||
(void) enable;
|
||||
}
|
||||
};
|
||||
|
||||
#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