Fix vfs load for mesh gmeshs type
This commit is contained in:
@@ -99,7 +99,7 @@ mjCFlexcomp::mjCFlexcomp(void) {
|
||||
|
||||
|
||||
// make flexcomp object
|
||||
bool mjCFlexcomp::Make(mjsBody* body, char* error, int error_sz) {
|
||||
bool mjCFlexcomp::Make(mjsBody* body, char* error, int error_sz, const mjVFS* vfs) {
|
||||
mjCModel* model = static_cast<mjCBody*>(body->element)->model;
|
||||
mjsCompiler* compiler = static_cast<mjCBody*>(body->element)->compiler;
|
||||
mjsFlex* dflex = def.spec.flex;
|
||||
@@ -170,11 +170,11 @@ bool mjCFlexcomp::Make(mjsBody* body, char* error, int error_sz) {
|
||||
break;
|
||||
|
||||
case mjFCOMPTYPE_MESH:
|
||||
res = MakeMesh(model, compiler, error, error_sz);
|
||||
res = MakeMesh(model, compiler, error, error_sz, vfs);
|
||||
break;
|
||||
|
||||
case mjFCOMPTYPE_GMSH:
|
||||
res = MakeGMSH(model, compiler, error, error_sz);
|
||||
res = MakeGMSH(model, compiler, error, error_sz, vfs);
|
||||
break;
|
||||
|
||||
case mjFCOMPTYPE_DIRECT:
|
||||
@@ -1129,7 +1129,7 @@ template <typename T> static T* VecToArray(std::vector<T>& vector, bool clear =
|
||||
|
||||
|
||||
// make mesh
|
||||
bool mjCFlexcomp::MakeMesh(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz) {
|
||||
bool mjCFlexcomp::MakeMesh(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz, const mjVFS* vfs) {
|
||||
// strip path
|
||||
if (!file.empty() && model->spec.strippath) {
|
||||
file = mjuu_strippath(file);
|
||||
@@ -1156,7 +1156,7 @@ bool mjCFlexcomp::MakeMesh(mjCModel* model, mjsCompiler* compiler, char* error,
|
||||
|
||||
try {
|
||||
resource = mjCBase::LoadResource(mjs_getString(model->spec.modelfiledir),
|
||||
filename, 0);
|
||||
filename, vfs);
|
||||
} catch (mjCError err) {
|
||||
return comperr(error, err.message, error_sz);
|
||||
}
|
||||
@@ -1248,7 +1248,7 @@ static int findstring(const char* buffer, int buffer_sz, const char* str) {
|
||||
|
||||
|
||||
// load points and elements from GMSH file
|
||||
bool mjCFlexcomp::MakeGMSH(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz) {
|
||||
bool mjCFlexcomp::MakeGMSH(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz, const mjVFS* vfs) {
|
||||
// strip path
|
||||
if (!file.empty() && model->spec.strippath) {
|
||||
file = mjuu_strippath(file);
|
||||
@@ -1264,7 +1264,7 @@ bool mjCFlexcomp::MakeGMSH(mjCModel* model, mjsCompiler* compiler, char* error,
|
||||
try {
|
||||
std::string filename = mjuu_combinePaths(mjs_getString(compiler->meshdir), file);
|
||||
resource = mjCBase::LoadResource(mjs_getString(model->spec.modelfiledir),
|
||||
filename, 0);
|
||||
filename, vfs);
|
||||
} catch (mjCError err) {
|
||||
return comperr(error, err.message, error_sz);
|
||||
}
|
||||
|
||||
@@ -53,13 +53,15 @@ typedef enum _mjtDof {
|
||||
class mjCFlexcomp {
|
||||
public:
|
||||
mjCFlexcomp(void);
|
||||
bool Make(mjsBody* body, char* error, int error_sz);
|
||||
bool Make(mjsBody* body, char* error, int error_sz, const mjVFS* vfs = nullptr);
|
||||
|
||||
bool MakeGrid(char* error, int error_sz);
|
||||
bool MakeBox(char* error, int error_sz, int dim, bool open = true);
|
||||
bool MakeSquare(char* error, int error_sz);
|
||||
bool MakeMesh(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz);
|
||||
bool MakeGMSH(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz);
|
||||
bool MakeMesh(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz,
|
||||
const mjVFS* vfs = nullptr);
|
||||
bool MakeGMSH(mjCModel* model, mjsCompiler* compiler, char* error, int error_sz,
|
||||
const mjVFS* vfs = nullptr);
|
||||
void LoadGMSH(mjCModel* model, mjResource* resource);
|
||||
void LoadGMSH41(char* buffer, int binary, int nodeend, int nodebegin,
|
||||
int elemend, int elembegin);
|
||||
|
||||
@@ -2849,7 +2849,7 @@ void mjXReader::OneFlexcomp(XMLElement* elem, mjsBody* body, const mjVFS* vfs) {
|
||||
|
||||
// make flexcomp
|
||||
char error[200];
|
||||
bool res = fcomp.Make(body, error, 200);
|
||||
bool res = fcomp.Make(body, error, 200, vfs);
|
||||
|
||||
// throw error
|
||||
if (!res) {
|
||||
|
||||
Reference in New Issue
Block a user