ports/devel/bullet/patches/patch-src_BulletSoftBody_btSoftBodyHelpers_cpp

152 lines
3.4 KiB
Text

backport of
https://github.com/bulletphysics/bullet3/commit/4f0673810cab0eee67ea314a3243952afd150cb4
Index: src/BulletSoftBody/btSoftBodyHelpers.cpp
--- src/BulletSoftBody/btSoftBodyHelpers.cpp.orig
+++ src/BulletSoftBody/btSoftBodyHelpers.cpp
@@ -1488,30 +1488,6 @@ void btSoftBodyHelpers::writeObj(const char* filename,
fs.close();
}
-static inline bool isSpace(const char c)
-{
- return (c == ' ') || (c == '\t');
-}
-static inline bool isNewLine(const char c)
-{
- return (c == '\r') || (c == '\n') || (c == '\0');
-}
-static inline float parseFloat(const char*& token)
-{
- token += strspn(token, " \t");
- float f = (float)atof(token);
- token += strcspn(token, " \t\r");
- return f;
-}
-static inline void parseFloat3(
- float& x, float& y, float& z,
- const char*& token)
-{
- x = parseFloat(token);
- y = parseFloat(token);
- z = parseFloat(token);
-}
-
void btSoftBodyHelpers::writeState(const char* file, const btSoftBody* psb)
{
std::ofstream fs;
@@ -1540,114 +1516,6 @@ void btSoftBodyHelpers::writeState(const char* file, c
fs << "\n";
}
fs.close();
-}
-
-std::string btSoftBodyHelpers::loadDeformableState(btAlignedObjectArray<btVector3>& qs, btAlignedObjectArray<btVector3>& vs, const char* filename, CommonFileIOInterface* fileIO)
-{
- {
- qs.clear();
- vs.clear();
- std::string tmp = filename;
- std::stringstream err;
-#ifdef USE_STREAM
- std::ifstream ifs(filename);
- if (!ifs)
- {
- err << "Cannot open file [" << filename << "]" << std::endl;
- return err.str();
- }
-#else
- int fileHandle = fileIO->fileOpen(filename, "r");
- if (fileHandle < 0)
- {
- err << "Cannot open file [" << filename << "]" << std::endl;
- return err.str();
- }
-#endif
-
- std::string name;
-
- int maxchars = 8192; // Alloc enough size.
- std::vector<char> buf(maxchars); // Alloc enough size.
- std::string linebuf;
- linebuf.reserve(maxchars);
-
-#ifdef USE_STREAM
- while (ifs.peek() != -1)
-#else
- char* line = 0;
- do
-#endif
- {
- linebuf.resize(0);
-#ifdef USE_STREAM
- safeGetline(ifs, linebuf);
-#else
- char tmpBuf[1024];
- line = fileIO->readLine(fileHandle, tmpBuf, 1024);
- if (line)
- {
- linebuf = line;
- }
-#endif
- // Trim newline '\r\n' or '\r'
- if (linebuf.size() > 0)
- {
- if (linebuf[linebuf.size() - 1] == '\n') linebuf.erase(linebuf.size() - 1);
- }
- if (linebuf.size() > 0)
- {
- if (linebuf[linebuf.size() - 1] == '\n') linebuf.erase(linebuf.size() - 1);
- }
-
- // Skip if empty line.
- if (linebuf.empty())
- {
- continue;
- }
-
- // Skip leading space.
- const char* token = linebuf.c_str();
- token += strspn(token, " \t");
-
- btAssert(token);
- if (token[0] == '\0') continue; // empty line
-
- if (token[0] == '#') continue; // comment line
-
- // q
- if (token[0] == 'q' && isSpace((token[1])))
- {
- token += 2;
- float x, y, z;
- parseFloat3(x, y, z, token);
- qs.push_back(btVector3(x, y, z));
- continue;
- }
-
- // v
- if (token[0] == 'v' && isSpace((token[1])))
- {
- token += 3;
- float x, y, z;
- parseFloat3(x, y, z, token);
- vs.push_back(btVector3(x, y, z));
- continue;
- }
-
- // Ignore unknown command.
- }
-#ifndef USE_STREAM
- while (line)
- ;
-#endif
-
- if (fileHandle >= 0)
- {
- fileIO->fileClose(fileHandle);
- }
- return err.str();
- }
}
void btSoftBodyHelpers::duplicateFaces(const char* filename, const btSoftBody* psb)