struct mola::MolaVizImGuiCore::PerWindowData

Overview

#include <MolaVizImGuiCore.h>

struct PerWindowData
{
    // structs

    struct PendingSensorObs;

    // fields

    GLFWwindow* glfw_window = nullptr;
    std::shared_ptr<mrpt::opengl::COpenGLScene> background_scene;
    std::mutex background_scene_mtx;
    std::unique_ptr<mrpt::imgui::CImGuiSceneView> background_scene_view;
    float cam_azimuth_deg = 110.0f;
    float cam_elevation_deg = 15.0f;
    float cam_zoom = 20.0f;
    float cam_look_at[3] = {0.0f, 0.0f, 0.0f};
    bool cam_orthographic = false;
    bool cam_dirty = true;
    std::map<subwindow_name_t, SubWindowState> sub_windows;
    std::map<subwindow_name_t, PendingSensorObs> sensor_windows;
    std::deque<DecayingCloud> decaying_clouds;
    size_t max_decaying_clouds = 100;
    mola::gui::MenuBar menu_bar;
    bool console_open = true;
    std::vector<PlotWindowState> plot_windows;
    int next_plot_id = 1;
    bool console_dock_defaulted = false;
    ImGuiID dock_central_id = 0;
    ImGuiID default_dock_top_id = 0;
};

Fields

std::unique_ptr<mrpt::imgui::CImGuiSceneView> background_scene_view

nullptr in embed mode (host renders via its own CImGuiSceneView).

bool console_open = true

Drives the Console window’s native [x] button; the “View” menu’s checklist re-opens it, same mechanism as the plot windows below.

std::vector<PlotWindowState> plot_windows

Open plot windows for this parent window; created via the “View” menu, each independently closable/reopenable.

bool console_dock_defaulted = false

Set once render_frame() has attempted the Console’s default bottom-dock, so it only runs once per session. The attempt itself is a no-op if the Console already has a saved imgui.ini entry (its own or a user-moved one).

ImGuiID dock_central_id = 0

ID of the dock node currently acting as the “remaining” passthrough area available for further default-dock splits (Console, then any dock_top_by_default window). Splitting off a slice always updates this to the new remainder, since after a node is split its own ID becomes a non-leaf parent and can no longer be split directly. Zero until the dockspace node has been resolved for the first time.

ImGuiID default_dock_top_id = 0

Dock node reserved at the top of the main window, lazily created the first time a window without a saved imgui.ini entry requests WindowDescription::dock_top_by_default (e.g. a Dataset_UI panel). Zero until then.