#pragma once

#include "interfaces/IInputManager.hpp"
#include "GLFW/glfw3.h"

namespace TSE::GLFW
{
    class InputGlfw : public IInputManager
    {
    public:
        static void Init();
        void Delete() override;

        static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods);
        static void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods);
        static void CursorPosCallback(GLFWwindow *window, double xpos, double ypos);
        static void ScrollCallback(GLFWwindow *window, double xoffset, double yoffset);
        static void CharCallback(GLFWwindow *window, unsigned int codepoint);
    };
} // namespace TSE

