2021-12-20 03:31:44 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <string>
|
2021-12-22 18:19:53 +00:00
|
|
|
#include "OrbitingCamera.hpp"
|
2021-12-24 14:14:35 +00:00
|
|
|
#include "Shapes.hpp"
|
2021-12-20 03:31:44 +00:00
|
|
|
|
|
|
|
struct GLFWwindow;
|
|
|
|
|
2021-12-21 17:14:01 +00:00
|
|
|
struct WindowData
|
|
|
|
{
|
2021-12-22 23:52:28 +00:00
|
|
|
lol::Camera* camera;
|
2021-12-21 17:14:01 +00:00
|
|
|
};
|
|
|
|
|
2021-12-20 03:31:44 +00:00
|
|
|
class Application
|
|
|
|
{
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
////// SINGLETON BOILERPLATE ////////////////////////////
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
public:
|
|
|
|
static Application& Instance()
|
|
|
|
{
|
|
|
|
static Application app;
|
|
|
|
return app;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
Application() = default;
|
|
|
|
~Application();
|
|
|
|
Application(const Application& other) = delete;
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
////// APPLICATION IMPLEMENTATION ///////////////////////
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
public:
|
|
|
|
void Init(int width, int height, const std::string& title);
|
|
|
|
void Launch();
|
|
|
|
|
|
|
|
private:
|
|
|
|
GLFWwindow* window = nullptr;
|
2021-12-21 17:14:01 +00:00
|
|
|
WindowData data;
|
|
|
|
|
2021-12-22 18:19:53 +00:00
|
|
|
OrbitingCamera camera;
|
|
|
|
float pitch, yaw;
|
2021-12-20 18:09:52 +00:00
|
|
|
|
2021-12-21 14:22:47 +00:00
|
|
|
glm::vec3 cubeOrientation, cubePosition, cubeScale;
|
2021-12-24 14:14:35 +00:00
|
|
|
std::vector<Shape*> shapes;
|
2021-12-20 03:31:44 +00:00
|
|
|
};
|