/* * Created by Brett Terpstra 6920201 on 16/01/23. * Copyright (c) Brett Terpstra 2023 All Rights Reserved */ #ifndef FINAL_PROJECT_WINDOW_H #define FINAL_PROJECT_WINDOW_H #ifndef FP_FAR_PLANE #define FP_FAR_PLANE 1000.0f #define FP_NEAR_PLANE 0.1f #endif // emscripten provides its own gl bindings. #ifndef __EMSCRIPTEN__ #include #else #include #include #define GL_GLEXT_PROTOTYPES #define EGL_EGLEXT_PROTOTYPES #endif #include #include namespace fp::window { /** * Handles all the init setup for creating a GLFW window. * @param width width of the window * @param height height of the window */ void init(int width = 1440, int height = 720); void update(); void close(); bool isCloseRequested(); GLFWwindow* getWindow(); bool isKeyPressed(int key); bool isMousePressed(int button); bool mouseState(); bool keyState(); bool mouseGrabbed(); void mouseGrabbed(bool state); float mouseDX(); float mouseDY(); // seconds double getFrameDelta(); // nanoseconds long getFrameDeltaRaw(); // nanoseconds, from current time not last frame long getCurrentDelta(); const blt::mat4x4& getPerspectiveMatrix(); void setFOV(float new_fov); } #endif //FINAL_PROJECT_WINDOW_H