diff options
| author | hachem <im@hachem.wtf> | 2026-08-23 17:21:37 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-23 17:21:37 +0200 |
| commit | a76180aaf4e38a1623a93586800e0f3e54d58c1b (patch) | |
| tree | 99d16d1fd074b112a92fbb4ad9ff3ba543b453d3 /src/core/application.h | |
| parent | b72762fd3fa3735c12146e8c702f03000317db6f (diff) | |
feat: complete RHI api
Diffstat (limited to 'src/core/application.h')
| -rw-r--r-- | src/core/application.h | 53 |
1 files changed, 37 insertions, 16 deletions
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 <string> +#include <vector> 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<StateManager> m_state_manager; Scope<Window> m_window; - Scope<Engine> m_engine; - Scope<RendererBackend> m_renderer; + + Scope<RHI::Device> m_device; + Scope<SceneRenderer> m_scene_renderer; + Scope<BlackHoleRenderer> m_black_hole_renderer; + Ref<RHI::Texture> 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<SceneObject> 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; }; } |
