diff --git a/simulate/simulate.cc b/simulate/simulate.cc index e3592088..30761ecc 100644 --- a/simulate/simulate.cc +++ b/simulate/simulate.cc @@ -596,9 +596,9 @@ void DetectImageSensors(mj::Simulate* sim, const mjModel* m) { // Check if this is an image sensor: width*height*3 == dim if (width > 0 && height > 0 && width * height * 3 == dim) { - const char* name = m->names + m->name_sensoradr[i]; + const char* name = mj_id2name(m, mjOBJ_SENSOR, i); sim->image_sensor_indices.push_back(i); - sim->image_sensor_names.push_back(name); + sim->image_sensor_names.push_back(name ? name : ""); sim->image_sensor_count++; } } @@ -932,8 +932,9 @@ void MakeRenderingSection(mj::Simulate* sim, const mjModel* m) { for (int i=0; incam, mjMAXUIMULTI-2); i++) { // prepare name char camname[mjMAXUINAME] = "\n"; - if (m->names[m->name_camadr[i]]) { - mju::strcat_arr(camname, m->names+m->name_camadr[i]); + const char* name = mj_id2name(m, mjOBJ_CAMERA, i); + if (name) { + mju::strcat_arr(camname, name); } else { mju::sprintf_arr(camname, "\nCamera %d", i); } @@ -2529,7 +2530,8 @@ void Simulate::LoadOnRenderThread() { jnt_names_.clear(); jnt_names_.reserve(this->m_->njnt); for (int i = 0; i < this->m_->njnt; ++i) { - jnt_names_.emplace_back(this->m_->names + this->m_->name_jntadr[i]); + const char* name = mj_id2name(this->m_, mjOBJ_JOINT, i); + jnt_names_.emplace_back(name ? name : ""); } actuator_group_.resize(this->m_->nu); @@ -2550,13 +2552,15 @@ void Simulate::LoadOnRenderThread() { actuator_names_.clear(); actuator_names_.reserve(this->m_->nu); for (int i = 0; i < this->m_->nu; ++i) { - actuator_names_.emplace_back(this->m_->names + this->m_->name_actuatoradr[i]); + const char* name = mj_id2name(this->m_, mjOBJ_ACTUATOR, i); + actuator_names_.emplace_back(name ? name : ""); } equality_names_.clear(); equality_names_.reserve(this->m_->neq); for (int i = 0; i < this->m_->neq; ++i) { - equality_names_.emplace_back(this->m_->names + this->m_->name_eqadr[i]); + const char* name = mj_id2name(this->m_, mjOBJ_EQUALITY, i); + equality_names_.emplace_back(name ? name : ""); } qpos_.resize(this->m_->nq); diff --git a/src/experimental/platform/ux/gui.cc b/src/experimental/platform/ux/gui.cc index 8e947711..26359c7d 100644 --- a/src/experimental/platform/ux/gui.cc +++ b/src/experimental/platform/ux/gui.cc @@ -642,8 +642,8 @@ std::string GetCameraName(const mjModel* model, const mjvCamera& camera, return kCameraWasdName; } else if (index == kTrackingCameraIdx) { return "Tracking (" + std::to_string(camera.trackbodyid) + ")"; - } else if (model->names[model->name_camadr[index]]) { - return std::string(model->names + model->name_camadr[index]); + } else if (const char* cam_name = mj_id2name(model, mjOBJ_CAMERA, index)) { + return cam_name; } else { return kCameraUnnamedName; } @@ -1262,8 +1262,8 @@ void JointsGui(const mjModel* model, const mjData* data, continue; } - const char* jnt_name = model->names + model->name_jntadr[i]; - if (*jnt_name) { + const char* jnt_name = mj_id2name(model, mjOBJ_JOINT, i); + if (jnt_name) { std::snprintf(name, sizeof(name), "%s", jnt_name); } else { std::snprintf(name, sizeof(name), "joint %d", i); @@ -1315,8 +1315,8 @@ void ControlsGui(const mjModel* model, const mjData* data, continue; } - const char* ctrl_name = model->names + model->name_actuatoradr[i]; - if (*ctrl_name) { + const char* ctrl_name = mj_id2name(model, mjOBJ_ACTUATOR, i); + if (ctrl_name) { std::snprintf(name, sizeof(name), "%s", ctrl_name); } else { std::snprintf(name, sizeof(name), "control %d", i); diff --git a/src/experimental/platform/ux/picture_gui.cc b/src/experimental/platform/ux/picture_gui.cc index fdf1fa3b..7133a8b2 100644 --- a/src/experimental/platform/ux/picture_gui.cc +++ b/src/experimental/platform/ux/picture_gui.cc @@ -31,8 +31,8 @@ static bool PipGuiImpl(const mjModel* model, mjData* data, float aspect_ratio, bool result = true; auto get_camera_name = [model](int i) -> const char* { - if (model->names[model->name_camadr[i]]) { - return model->names + model->name_camadr[i]; + if (const char* name = mj_id2name(model, mjOBJ_CAMERA, i)) { + return name; } else { return "Unnamed"; } diff --git a/src/experimental/studio/app.cc b/src/experimental/studio/app.cc index 8bad16f2..ce7df93f 100644 --- a/src/experimental/studio/app.cc +++ b/src/experimental/studio/app.cc @@ -1609,9 +1609,8 @@ void App::ModelOptionsGui() { ImGui::Spacing(); { char key_fmt[128]; - const char* key_name = - model()->names + model()->name_keyadr[ui_.key_idx]; - if (key_name[0] != '\0') { + const char* key_name = mj_id2name(model(), mjOBJ_KEY, ui_.key_idx); + if (key_name) { std::snprintf(key_fmt, sizeof(key_fmt), "%s", key_name); } else { std::snprintf(key_fmt, sizeof(key_fmt), "Key %d", ui_.key_idx);