Merge GetRenderable and GetSelectedRenderable
PiperOrigin-RevId: 943844092 Change-Id: Ia3888ea6c289d491ddb2fba0ea4f5799c367ef2c
This commit is contained in:
committed by
Copybara-Service
parent
641c1cf11b
commit
6d02ee4756
@@ -356,6 +356,20 @@ mjrfRenderable* RenderableManager::GetRenderable(mjtObj obj_type,
|
|||||||
return sliders_[obj_index].get();
|
return sliders_[obj_index].get();
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
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_) {
|
if (obj_type != selected_obj_type_ || obj_index != selected_obj_index_) {
|
||||||
mjrfMaterial material;
|
mjrfMaterial material;
|
||||||
|
|
||||||
mjrfRenderable* prev_renderable = GetSelectedRenderable();
|
mjrfRenderable* prev_renderable =
|
||||||
|
GetRenderable(selected_obj_type_, selected_obj_index_);
|
||||||
if (prev_renderable) {
|
if (prev_renderable) {
|
||||||
mjrf_getRenderableMaterial(prev_renderable, &material);
|
mjrf_getRenderableMaterial(prev_renderable, &material);
|
||||||
material.selected = 0;
|
material.selected = 0;
|
||||||
@@ -861,7 +876,8 @@ void RenderableManager::SelectObject(mjtObj obj_type, int obj_index) {
|
|||||||
selected_obj_type_ = obj_type;
|
selected_obj_type_ = obj_type;
|
||||||
selected_obj_index_ = obj_index;
|
selected_obj_index_ = obj_index;
|
||||||
|
|
||||||
mjrfRenderable* curr_renderable = GetSelectedRenderable();
|
mjrfRenderable* curr_renderable =
|
||||||
|
GetRenderable(selected_obj_type_, selected_obj_index_);
|
||||||
if (curr_renderable) {
|
if (curr_renderable) {
|
||||||
mjrf_getRenderableMaterial(curr_renderable, &material);
|
mjrf_getRenderableMaterial(curr_renderable, &material);
|
||||||
material.selected = 1;
|
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,
|
void RenderableManager::SetVisibility(mjtObj obj_type, bool visible,
|
||||||
std::optional<int> group) {
|
std::optional<int> group) {
|
||||||
const mjModel* model = model_objects_->GetModel();
|
const mjModel* model = model_objects_->GetModel();
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ class RenderableManager {
|
|||||||
// Applies the visualization options to the renderables in the scene.
|
// Applies the visualization options to the renderables in the scene.
|
||||||
void Apply(const mjvOption& vopts);
|
void Apply(const mjvOption& vopts);
|
||||||
|
|
||||||
|
RenderableManager(const RenderableManager&) = delete;
|
||||||
|
RenderableManager& operator=(const RenderableManager&) = delete;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void AddGeomGeoms();
|
void AddGeomGeoms();
|
||||||
void AddSiteGeoms();
|
void AddSiteGeoms();
|
||||||
@@ -72,8 +75,6 @@ class RenderableManager {
|
|||||||
|
|
||||||
int GetSegmentationId(mjtObj obj_type, int obj_index);
|
int GetSegmentationId(mjtObj obj_type, int obj_index);
|
||||||
|
|
||||||
mjrfRenderable* GetSelectedRenderable();
|
|
||||||
|
|
||||||
mjrfContext* ctx_;
|
mjrfContext* ctx_;
|
||||||
mjrfScene* scene_;
|
mjrfScene* scene_;
|
||||||
ModelObjects* model_objects_;
|
ModelObjects* model_objects_;
|
||||||
|
|||||||
Reference in New Issue
Block a user