Ensure we have a valid vfs when loading a spec.
PiperOrigin-RevId: 882503274 Change-Id: Iddbd6f00c0344bb34d68bb72a640c0a8e81076a2
This commit is contained in:
committed by
Copybara-Service
parent
99af6fb9a5
commit
16d618e7b9
@@ -61,6 +61,10 @@ std::unique_ptr<ModelHolder> ModelHolder::FromBuffer(
|
||||
return mh;
|
||||
}
|
||||
|
||||
ModelHolder::ModelHolder() {
|
||||
mj_defaultVFS(&vfs_);
|
||||
}
|
||||
|
||||
ModelHolder::~ModelHolder() {
|
||||
if (data_) {
|
||||
mj_deleteData(data_);
|
||||
@@ -94,7 +98,6 @@ void ModelHolder::InitFromSpec(mjSpec* spec) {
|
||||
}
|
||||
|
||||
void ModelHolder::InitFromFile(std::string_view filepath) {
|
||||
mj_defaultVFS(&vfs_);
|
||||
if (filepath.ends_with(".mjb")) {
|
||||
model_ = mj_loadModel(filepath.data(), &vfs_);
|
||||
} else {
|
||||
@@ -108,8 +111,6 @@ void ModelHolder::InitFromFile(std::string_view filepath) {
|
||||
void ModelHolder::InitFromBuffer(std::span<const std::byte> buffer,
|
||||
std::string_view content_type,
|
||||
std::string_view filename) {
|
||||
mj_defaultVFS(&vfs_);
|
||||
|
||||
if (content_type == "text/xml") {
|
||||
const char* ptr = reinterpret_cast<const char*>(buffer.data());
|
||||
spec_ = mj_parseXMLString(ptr, nullptr, error_, sizeof(error_));
|
||||
|
||||
@@ -64,7 +64,7 @@ class ModelHolder {
|
||||
mjModel* ReleaseModel();
|
||||
|
||||
private:
|
||||
ModelHolder() = default;
|
||||
ModelHolder();
|
||||
void InitFromSpec(mjSpec* spec);
|
||||
void InitFromFile(std::string_view filepath);
|
||||
void InitFromBuffer(std::span<const std::byte> buffer,
|
||||
|
||||
Reference in New Issue
Block a user