skate3recomp-multiplayer/src/skate3_native_debug_dialog.h

41 lines
1.2 KiB
C++

#pragma once
// F12 native-render debug menu: live checkboxes for every native renderer
// subsystem (all hot-reload cvars), used to bisect visual regressions
// (flicker, wrong shading) in-game without rebuilds.
#include <rex/ui/imgui_dialog.h>
namespace skate3 {
class NativeDebugDialog final : public rex::ui::ImGuiDialog {
public:
explicit NativeDebugDialog(rex::ui::ImGuiDrawer* drawer) : ImGuiDialog(drawer) {}
void Show();
void Hide();
void Toggle();
bool visible() const { return visible_; }
protected:
void OnDraw(ImGuiIO& io) override;
private:
bool visible_ = false;
};
// Tiny always-on top-right corner readout of which renderer produced the
// last presented frame: NATIVE (native scene renderer) or EMULATED (Xenos
// GPU emulation; menus/loading yields, F5 off). Input-transparent, no
// continuous repaint (updates ride the guest frame paints); hidden via
// skate3_native_render_mode_indicator (hot).
class RenderModeIndicator final : public rex::ui::ImGuiDialog {
public:
explicit RenderModeIndicator(rex::ui::ImGuiDrawer* drawer) : ImGuiDialog(drawer) {}
protected:
bool WantsContinuousRepaint() const override { return false; }
void OnDraw(ImGuiIO& io) override;
};
} // namespace skate3