Fix vfs load for mesh gmeshs type

This commit is contained in:
Mark Yang
2026-03-07 21:45:12 -05:00
parent 6bc6c11c49
commit 95724d1ec2
4 changed files with 56 additions and 11 deletions
+7 -7
View File
@@ -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);
}