#pragma once #include "core/state.h" #include "core/event.h" #include "core/log.h" #include "rendering/renderer.h" namespace Donut { class ConfigState : public State { public: ~ConfigState() = default; void on_enter() override; void on_exit() override; void on_update(float delta_time) override; void on_render() override; void on_im_ui_render() override; void on_event(Event& event) override; private: void apply_settings(); void reset_to_defaults(); private: RendererAPI::API m_selected_api = RendererAPI::API::OpenGL; bool m_show_restart_message = false; float m_restart_message_timer = 0.0f; int m_target_fps = 60; int m_compute_height = 512; int m_max_steps_moving = 30000; int m_max_steps_static = 15000; float m_early_exit_distance = 5e12f; bool m_gravity_enabled = true; bool m_v_sync_enabled = true; bool m_show_fps = true; bool m_show_performance_metrics = true; bool m_show_debug_info = false; bool m_enable_anti_aliasing = true; int m_selected_theme = 0; }; };