From a76180aaf4e38a1623a93586800e0f3e54d58c1b Mon Sep 17 00:00:00 2001 From: hachem Date: Sun, 23 Aug 2026 17:21:37 +0200 Subject: feat: complete RHI api --- src/core/application.h | 53 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 16 deletions(-) (limited to 'src/core/application.h') diff --git a/src/core/application.h b/src/core/application.h index f2b5656..84cc600 100644 --- a/src/core/application.h +++ b/src/core/application.h @@ -1,13 +1,17 @@ #pragma once -#include "state_manager.h" #include "memory.h" #include "window.h" #include "event.h" #include "log.h" +#include "camera.h" -#include "engine/engine.h" -#include "rendering/renderer_backend.h" +#include "rendering/rhi.h" +#include "rendering/scene_renderer.h" +#include "rendering/black_hole_renderer.h" + +#include +#include namespace Donut { @@ -21,33 +25,50 @@ namespace Donut auto run() -> void; auto close() -> void; - auto get_window() -> Window& { return *m_window; } - auto get_state_manager() -> StateManager& { return *m_state_manager; } - auto get_engine() -> Engine& { return *m_engine; } - static auto get() -> Application& { return *s_instance; } + auto get_window() -> Window& { return *m_window; } + static auto get() -> Application& { return *s_instance; } private: auto on_init() -> void; auto on_shutdown() -> void; - auto on_update() -> void; - auto on_render() -> void; auto on_event(Event& event) -> void; - auto setup_docking_layout() -> void; + auto build_ui() -> void; auto build_scene_ui() -> void; + auto process_input() -> void; + auto set_free_fly(bool enabled) -> void; + auto reset_camera() -> void; + auto set_hdri(const std::string& path) -> void; + + auto render_frame() -> void; + private: - Scope m_state_manager; Scope m_window; - Scope m_engine; - Scope m_renderer; + + Scope m_device; + Scope m_scene_renderer; + Scope m_black_hole_renderer; + Ref m_cubemap; + + Camera m_camera{ 60.0f, 16.0f / 9.0f, 0.1f, 100.0f }; + Camera m_scene_camera{ 45.0f, 16.0f / 9.0f, 0.1f, 1000.0f }; + + BlackHoleParams m_bh_params; + std::vector m_scene_objects{ SceneObject{} }; + int m_selected_object = 0; + bool m_scene_mode = false; + std::string m_hdri_path; + + bool m_left_was_down = false; + double m_fps_last_x = 0.0, m_fps_last_y = 0.0; + double m_last_frame_time = 0.0; + double m_start_time = 0.0; + bool m_user_moving = false; bool m_running; bool m_minimized; - float m_delta_time = 0.0f; - float m_last_frame = 0.0f; - static Application* s_instance; }; } -- cgit v1.3