1
0
Files
BasaltMeter/BasaltPresenter/Shared/engine.hpp

50 lines
1.1 KiB
C++
Raw Normal View History

2026-01-04 16:12:36 +08:00
#pragma once
#include "basalt_char.hpp"
#include <string>
#include <cinttypes>
namespace Basalt::Shared::Engine {
enum class EngineKind {
DirectX8,
DirectX9,
DirectX11,
DirectX12,
OpenGL,
Vulkan,
};
struct EngineConfig {
2026-01-05 16:51:58 +08:00
bool headless; ///< Whether enable headless mode (No Window created).
2026-01-04 16:12:36 +08:00
std::basic_string<BSCHAR> title; ///< Window title.
std::uint32_t width; ///< Window width.
std::uint32_t height; ///< Window height.
};
2026-01-04 17:16:54 +08:00
enum class EngineStatus {
Ready, ///< Engine was allocated but not initialized.
Running, ///< Engine has been initialized and running.
Stop, ///< Engine is shutdown.
};
2026-01-04 16:12:36 +08:00
class IEngine {
public:
2026-01-04 17:16:54 +08:00
IEngine();
2026-01-04 16:12:36 +08:00
virtual ~IEngine();
public:
2026-01-04 17:16:54 +08:00
virtual void Startup(EngineConfig&& config);
2026-01-05 16:51:58 +08:00
/**
* @brief
* @return True for active exit.
*/
virtual bool Tick();
2026-01-04 17:16:54 +08:00
virtual void Shutdown();
2026-01-04 16:12:36 +08:00
protected:
EngineConfig config;
2026-01-04 17:16:54 +08:00
EngineStatus status;
2026-01-04 16:12:36 +08:00
};
}