53 lines
997 B
C++
53 lines
997 B
C++
#pragma once
|
|
#include <string>
|
|
|
|
class renderer;
|
|
class render_target;
|
|
class texture;
|
|
class application;
|
|
|
|
extern bool g_is_running;
|
|
extern bool g_exit_requested;
|
|
extern application* g_app_instance;
|
|
|
|
struct window_params {
|
|
std::string title;
|
|
int width;
|
|
int height;
|
|
bool fullscreen;
|
|
bool borderless;
|
|
bool resizable;
|
|
bool minimized;
|
|
bool maximized;
|
|
bool hi_dpi;
|
|
bool always_on_top;
|
|
};
|
|
|
|
class CORE_API application {
|
|
public:
|
|
application() {
|
|
g_app_instance = this;
|
|
}
|
|
|
|
virtual ~application() = default;
|
|
|
|
application(const application&) = delete;
|
|
|
|
application(application&&) = delete;
|
|
|
|
static application* get() {
|
|
return g_app_instance;
|
|
}
|
|
|
|
virtual void init(const window_params& in_window_params, int argc, char** argv);
|
|
|
|
virtual void shutdown();
|
|
|
|
void request_exit();
|
|
|
|
virtual void draw_gui() = 0;
|
|
virtual void tick(float delta_time) {}
|
|
protected:
|
|
std::shared_ptr<spdlog::logger> async_spdlog_;
|
|
};
|