#pragma once #include #include #include #include struct SDL_Window; namespace orange { struct MouseDelta { int x = 0; int y = 0; }; class Window { public: ~Window(); static bool GetInstanceExtensions(Window& window, uint32_t *count, const char **extensions); Result CreateSurface(VkInstance instance); static const char* GetError(); static Result Create(); bool Update(Input::InputHandler& handler); void EnableRelativeMouse(bool relative); MouseDelta GetMouseDelta(); protected: friend Result; Window(SDL_Window* window); private: SDL_Window* m_window = nullptr; bool m_relativeMouse = false; bool m_hasFocus = false; MouseDelta m_mouseDelta = {}; }; }