PyBullet fileIOPlugin: don't add equal fileIO interface twice (based on identical fileIOType and pathPrefix)

loadBullet goes through fileIOPlugin
This commit is contained in:
erwincoumans
2018-10-29 10:25:40 -07:00
parent ee76873689
commit 078887c4d7
7 changed files with 119 additions and 63 deletions

View File

@@ -16,12 +16,15 @@ struct b3BulletDefaultFileIO : public CommonFileIOInterface
return fileIo->findFile(orgFileName, relativeFileName, maxRelativeFileNameMaxLen);
}
char m_prefix[1024];
FILE* m_fileHandles[B3_FILEIO_MAX_FILES];
int m_numFileHandles;
b3BulletDefaultFileIO()
:m_numFileHandles(0)
b3BulletDefaultFileIO(int fileIOType=0, const char* pathPrefix=0)
:CommonFileIOInterface(fileIOType, m_prefix),
m_numFileHandles(0)
{
sprintf(m_prefix,"%s", pathPrefix);
for (int i=0;i<B3_FILEIO_MAX_FILES;i++)
{
m_fileHandles[i]=0;
@@ -97,7 +100,7 @@ struct b3BulletDefaultFileIO : public CommonFileIOInterface
virtual bool findResourcePath(const char* fileName, char* relativeFileName, int relativeFileNameSizeInBytes)
{
return b3ResourcePath::findResourcePath(fileName, relativeFileName, relativeFileNameSizeInBytes, b3BulletDefaultFileIO::FileIOPluginFindFile, this);
return b3ResourcePath::findResourcePath(fileName, relativeFileName, relativeFileNameSizeInBytes, b3BulletDefaultFileIO::FileIOPluginFindFile, this)>0;
}
@@ -114,7 +117,7 @@ struct b3BulletDefaultFileIO : public CommonFileIOInterface
}
//printf("Trying various directories, relative to current working directory\n");
const char* prefix[] = {"./", "./data/", "../data/", "../../data/", "../../../data/", "../../../../data/"};
const char* prefix[] = {m_prefix, "./", "./data/", "../data/", "../../data/", "../../../data/", "../../../../data/"};
int numPrefixes = sizeof(prefix) / sizeof(const char*);
f = 0;