1#ifndef LIBSBX_DEVICES_DEVICES_MODULE_HPP_
2#define LIBSBX_DEVICES_DEVICES_MODULE_HPP_
8#include <unordered_map>
10#include <fmt/format.h>
12#include <GLFW/glfw3.h>
14#include <libsbx/core/module.hpp>
16#include <libsbx/core/engine.hpp>
18#include <libsbx/units/time.hpp>
20#include <libsbx/devices/window.hpp>
21#include <libsbx/devices/input.hpp>
23namespace sbx::devices {
27 inline static const auto is_registered = register_module(stage::pre);
33 throw std::runtime_error{
"Could not initialize glfw"};
36 if (!glfwVulkanSupported()) {
37 throw std::runtime_error{
"Glfw does not support vulkan"};
49 auto update() ->
void override {
50 input::_transition_pressed_keys();
51 input::_transition_pressed_mouse_buttons();
52 input::_transition_scroll_delta();
61 auto required_instance_extensions()
const -> std::vector<const char*> {
62 auto extension_count = std::uint32_t{0};
63 auto extensions = glfwGetRequiredInstanceExtensions(&extension_count);
65 return std::vector<const char*>{extensions, extensions + extension_count};
70 std::unique_ptr<devices::window> _window{};
Definition: module.hpp:72
Definition: devices_module.hpp:25
Definition: window.hpp:30
Definition: window.hpp:24