Merge GetRenderable and GetSelectedRenderable

PiperOrigin-RevId: 943844092
Change-Id: Ia3888ea6c289d491ddb2fba0ea4f5799c367ef2c
This commit is contained in:
Haroon Qureshi
2026-07-07 05:54:08 -07:00
committed by Copybara-Service
parent 641c1cf11b
commit 6d02ee4756
2 changed files with 21 additions and 25 deletions
@@ -356,6 +356,20 @@ mjrfRenderable* RenderableManager::GetRenderable(mjtObj obj_type,
return sliders_[obj_index].get();
}
break;
case mjOBJ_BODY: {
const mjModel* model = model_objects_->GetModel();
for (int i = 0; i < model->ngeom; ++i) {
if (model->geom_bodyid[i] == obj_index) {
return geoms_[i].get();
}
}
for (int i = 0; i < model->nsite; ++i) {
if (model->site_bodyid[i] == obj_index) {
return sites_[i].get();
}
}
break;
}
default:
break;
}
@@ -851,7 +865,8 @@ void RenderableManager::SelectObject(mjtObj obj_type, int obj_index) {
if (obj_type != selected_obj_type_ || obj_index != selected_obj_index_) {
mjrfMaterial material;
mjrfRenderable* prev_renderable = GetSelectedRenderable();
mjrfRenderable* prev_renderable =
GetRenderable(selected_obj_type_, selected_obj_index_);
if (prev_renderable) {
mjrf_getRenderableMaterial(prev_renderable, &material);
material.selected = 0;
@@ -861,7 +876,8 @@ void RenderableManager::SelectObject(mjtObj obj_type, int obj_index) {
selected_obj_type_ = obj_type;
selected_obj_index_ = obj_index;
mjrfRenderable* curr_renderable = GetSelectedRenderable();
mjrfRenderable* curr_renderable =
GetRenderable(selected_obj_type_, selected_obj_index_);
if (curr_renderable) {
mjrf_getRenderableMaterial(curr_renderable, &material);
material.selected = 1;
@@ -870,27 +886,6 @@ void RenderableManager::SelectObject(mjtObj obj_type, int obj_index) {
}
}
mjrfRenderable* RenderableManager::GetSelectedRenderable() {
const mjModel* model = model_objects_->GetModel();
if (selected_obj_type_ == mjOBJ_FLEX) {
return flexes_[selected_obj_index_].get();
} else if (selected_obj_type_ == mjOBJ_SKIN) {
return skins_[selected_obj_index_].get();
} else if (selected_obj_type_ == mjOBJ_BODY) {
for (int i = 0; i < model->ngeom; ++i) {
if (model->geom_bodyid[i] == selected_obj_index_) {
return geoms_[i].get();
}
}
for (int i = 0; i < model->nsite; ++i) {
if (model->site_bodyid[i] == selected_obj_index_) {
return sites_[i].get();
}
}
}
return nullptr;
}
void RenderableManager::SetVisibility(mjtObj obj_type, bool visible,
std::optional<int> group) {
const mjModel* model = model_objects_->GetModel();
@@ -58,6 +58,9 @@ class RenderableManager {
// Applies the visualization options to the renderables in the scene.
void Apply(const mjvOption& vopts);
RenderableManager(const RenderableManager&) = delete;
RenderableManager& operator=(const RenderableManager&) = delete;
private:
void AddGeomGeoms();
void AddSiteGeoms();
@@ -72,8 +75,6 @@ class RenderableManager {
int GetSegmentationId(mjtObj obj_type, int obj_index);
mjrfRenderable* GetSelectedRenderable();
mjrfContext* ctx_;
mjrfScene* scene_;
ModelObjects* model_objects_;