#pragma once #include "basalt_char.hpp" #include #include namespace Basalt::Shared::Engine { enum class EngineKind { DirectX8, DirectX9, DirectX11, DirectX12, OpenGL, Vulkan, }; struct EngineConfig { bool is_headless; ///< Whether enable headless mode (No Window created). std::basic_string title; ///< Window title. std::uint32_t width; ///< Window width. std::uint32_t height; ///< Window height. }; class IEngine { public: IEngine(EngineConfig&& config); virtual ~IEngine(); public: virtual void Tick() = 0; protected: EngineConfig config; }; }