From 6d02ee4756fbc458ff47da97a5cc14ce1cb5567b Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Tue, 7 Jul 2026 05:54:08 -0700 Subject: [PATCH] Merge GetRenderable and GetSelectedRenderable PiperOrigin-RevId: 943844092 Change-Id: Ia3888ea6c289d491ddb2fba0ea4f5799c367ef2c --- .../filament/support/renderable_manager.cc | 41 ++++++++----------- .../filament/support/renderable_manager.h | 5 ++- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/render/filament/support/renderable_manager.cc b/src/render/filament/support/renderable_manager.cc index 787821fe..4d8f2b38 100644 --- a/src/render/filament/support/renderable_manager.cc +++ b/src/render/filament/support/renderable_manager.cc @@ -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 group) { const mjModel* model = model_objects_->GetModel(); diff --git a/src/render/filament/support/renderable_manager.h b/src/render/filament/support/renderable_manager.h index c1be1606..d5a3f7ea 100644 --- a/src/render/filament/support/renderable_manager.h +++ b/src/render/filament/support/renderable_manager.h @@ -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_;