Move mj_loadModel to xml_api.cc.

PiperOrigin-RevId: 635748029
Change-Id: Ie4c7d34c9738e5497ec700089d4dba780ba7d5ed
This commit is contained in:
Kyle Bayes
2024-05-21 03:36:21 -07:00
committed by Copybara-Service
parent f0b633de6a
commit 2f19941fcf
4 changed files with 38 additions and 39 deletions
+31
View File
@@ -26,6 +26,9 @@
#include <type_traits>
#include <mujoco/mjmodel.h>
#include "engine/engine_io.h"
#include "engine/engine_resource.h"
#include "engine/engine_vfs.h"
#include "user/user_api.h"
#include "xml/xml.h"
#include "xml/xml_native_reader.h"
@@ -178,3 +181,31 @@ int mj_printSchema(const char* filename, char* buffer, int buffer_sz, int flg_ht
// return string length
return str.str().size();
}
// load model from binary MJB resource
mjModel* mj_loadModel(const char* filename, const mjVFS* vfs) {
mjResource* resource = nullptr;
// first try vfs, otherwise try a provider or OS filesystem
if (!(resource = mju_openVfsResource(filename, vfs))) {
char error[1024];
if (!(resource = mju_openResource(filename, error, 1024))) {
mju_warning("%s", error);
return nullptr;
}
}
const void* buffer = NULL;
int buffer_sz = mju_readResource(resource, &buffer);
if (buffer_sz < 1) {
mju_closeResource(resource);
return nullptr;
}
mjModel* m = mj_loadModelBuffer(buffer, buffer_sz);
mju_closeResource(resource);
return m;
}