diff --git a/src/experimental/studio/app.cc b/src/experimental/studio/app.cc index 2388405b..f5262306 100644 --- a/src/experimental/studio/app.cc +++ b/src/experimental/studio/app.cc @@ -1678,8 +1678,6 @@ void App::VisualizationGui() { } void App::RenderingGui() { - mjvScene& scene = renderer_->GetScene(); - // Generate a list of camera names dynamically. std::vector camera_names; camera_names.push_back("Free"); @@ -1725,7 +1723,10 @@ void App::RenderingGui() { ImGui::Unindent(ImGui::GetTreeNodeToLabelSpacing() / 2); for (int i = 0; i < mjNRNDFLAG; ++i) { - Toggle(mjRNDSTRING[i][0], scene.flags[i]); + mjtByte flag = renderer_->GetFlag(static_cast(i)); + Toggle(mjRNDSTRING[i][0], flag); + renderer_->SetFlag(static_cast(i), flag); + if (i % 2 == 0 && i != mjNRNDFLAG - 1) { ImGui::SameLine(); } diff --git a/src/experimental/toolbox/renderer.h b/src/experimental/toolbox/renderer.h index 2891a45a..b7ee239c 100644 --- a/src/experimental/toolbox/renderer.h +++ b/src/experimental/toolbox/renderer.h @@ -55,6 +55,10 @@ class Renderer { // Saves a screenshot of the simulation state into the given file. void SaveScreenshot(const std::string& filename, int width, int height); + // Rendering flags. + mjtByte GetFlag(mjtRndFlag flag) const { return scene_.flags[flag];} + void SetFlag(mjtRndFlag flag, mjtByte value) { scene_.flags[flag] = value; } + // Returns the mjvScene used by the renderer. mjvScene& GetScene() { return scene_; }