This repository has been archived by the owner on Apr 29, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Game.h
131 lines (100 loc) · 2.29 KB
/
Game.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#pragma once
#include "libs.h"
#include "Camera.h"
#include "Projectiles.h"
// Enumerations
enum shader_enum {SHADER_CORE_PROGRAM = 0};
enum texture_enum { TEX0 = 0, TEX1 = 1, TEX2 = 2, TEX3 = 3};
enum material_enum { MAT_0 = 0 };
enum mesh_enum { MESH_QUAD = 0 };
class Game
{
private:
// Window
GLFWwindow* window;
// Delta Time
float dt;
float curTime;
float lastTime;
// Mouse Inputs
double lastMouseX;
double lastMouseY;
double mouseX;
double mouseY;
double mouseOffsetX;
double mouseOffsetY;
bool firstMouse;
Camera camera;
const int WINDOW_WIDTH;
const int WINDOW_HEIGHT;
int framebufferWidth;
int framebufferHeight;
// OpenGL Context
const int GL_VERSION_MAJOR;
const int GL_VERSION_MINOR;
// Matrices
glm::mat4 ViewMatrix;
glm::vec3 camPosition;
glm::vec3 worldUP;
glm::vec3 camFront;
float fov;
float nearPlane;
float farPlane;
glm::mat4 ProjectionMatrix;
// Shaders
vector<Shader*> shaders;
// Textures
vector<Texture*> textures;
// Materials
vector<Material*> materials;
// Model
vector<Model*> models;
// Lights
vector<glm::vec3*> lights;
// Game Stuff
// Projectile
vector<Projectiles*> projectile;
float PROJECTILE_SPEED;
// Mouse click
bool mouseClicked;
// Private Functions
void initGLFW();
void initWindow(const char* title, bool resizable);
void initGLEW();
void initOpenGLOptions();
void initMatrices();
void initShaders();
void initTextures();
void initMaterials();
void initModels();
void initLights();
void initUniforms();
void updateUniforms();
public:
Game(
const char* title,
const int WINDOW_WIDTH, const int WINDOW_HEIGHT,
const int GL_VERSION_MAJOR, const int GL_VERSION_MINOR,
bool resizable
);
virtual ~Game();
// Accessors
int getWindowShouldClose() {
return glfwWindowShouldClose(this->window);
}
// Modifiers
void setWindowShouldClose();
// Functions
// Static Variables
// Functions
void updateDt();
void updateMouseInput();
void updateKeyboardInput();
void updateInput();
void update();
void render();
// Static functions
static void framebufferResizeCallback(GLFWwindow* window, int fbW, int fbH);
//static void updateInput(GLFWwindow *window);
// void updateInput(GLFWwindow *window, Mesh &mesh);
};