2#ifndef ENIGMA_APPLICATION_H
3#define ENIGMA_APPLICATION_H
16#include <cpr/threadpool.h>
43 void Exit(
const std::string& message,
const std::int32_t exit_code)
noexcept;
51 std::future<void>
LaunchWorkerThread(
Scene *scene,
const std::string& loading_text,
const std::function<
void()>& work_func);
73 const std::unique_ptr<Window>&
GetWindow() const noexcept {
return m_window; }
84 std::uint32_t
GetFPS() const noexcept {
return m_FPS ? *m_FPS : 0u; }
90 constexpr const std::unique_ptr<RAMInfo>&
GetRAMInfo() const noexcept {
return m_ram_info; }
93 constexpr const std::unique_ptr<CPUInfo>&
GetCPUInfo() const noexcept {
return m_cpu_info; }
97 void UpdateDeltaTime() noexcept;
99 void UpdateHardwareInfo() noexcept;
106 void InitImGuiRenderer();
110 void InitImGuiFonts();
113 std::unique_ptr<
Window> m_window;
116 std::vector<std::unique_ptr<
Scene>> m_scenes;
117 std::unique_ptr<
Scene> m_loading_scene;
122 float m_last_frame_time;
123 float m_current_frame_time;
127 static constexpr
float HARWARE_INFO_UPDATE_TIME = 1.0f;
128 float m_hardware_info_timer;
129 std::unique_ptr<std::uint32_t> m_FPS;
130 std::unique_ptr<
RAMInfo> m_ram_info;
131 std::unique_ptr<
CPUInfo> m_cpu_info;
140 std::unique_ptr<cpr::ThreadPool> m_threadPool{};
#define NS_ENIGMA_BEGIN
Enable/Disable Assertions.
void OnEvent(Event &event)
Event callbacks.
static Application * getInstance() noexcept
Application(const WindowSettings &window_settings=WindowSettings())
std::uint32_t GetFPS() const noexcept
bool OnWindowResize(WindowResizeEvent &event)
const std::unique_ptr< Window > & GetWindow() const noexcept
std::future< void > LaunchWorkerThread(Scene *scene, const std::string &loading_text, const std::function< void()> &work_func)
Launches detached thread seperated from main UI thread.
constexpr const std::unique_ptr< RAMInfo > & GetRAMInfo() const noexcept
bool OnWindowClose(WindowCloseEvent &event)
void Exit(const std::string &message, const std::int32_t exit_code) noexcept
void PushScene(std::unique_ptr< Scene > scene)
constexpr const std::unique_ptr< CPUInfo > & GetCPUInfo() const noexcept
float GetDeltaTime() const noexcept
void EndApplication() noexcept
bool OnFrameBufferResize(FrameBufferResizeEvent &event)
Single process instance class.