Move camera to Controller class
This commit is contained in:
@@ -13,7 +13,6 @@
|
||||
#endif
|
||||
|
||||
#include "Controller.h"
|
||||
#include "Camera.h"
|
||||
#include "Texture.h"
|
||||
|
||||
Controller::Controller() {
|
||||
@@ -30,6 +29,7 @@ Controller::Controller() {
|
||||
|
||||
gameWindow = new Window();
|
||||
gameEventHandler = new EventHandler(gameWindow->getGLFWwindow());
|
||||
camera = new Camera(90.0f, gameWindow->getWindowWidth(), gameWindow->getWindowHeight());
|
||||
}
|
||||
|
||||
Controller::~Controller() {
|
||||
@@ -72,9 +72,8 @@ void Controller::run() {
|
||||
Texture tex1("res/tex.png", shaderProgram.getShaderProgramId());
|
||||
|
||||
glm::mat4 model = glm::mat4(1.0f);
|
||||
Camera cam1(90.0f, gameWindow->getWindowWidth(), gameWindow->getWindowHeight());
|
||||
|
||||
cam1.translate(glm::vec3(0.0f, 0.0f, 2.5f));
|
||||
camera->translate(glm::vec3(0.0f, 0.0f, 2.5f));
|
||||
|
||||
// This is the game loop
|
||||
while(!glfwWindowShouldClose(gameWindow->getGLFWwindow())) {
|
||||
@@ -93,10 +92,10 @@ void Controller::run() {
|
||||
// ...
|
||||
model = glm::rotate(model, (float)(this->deltaTime*0.0005), glm::vec3(0.0f, 1.0f, 0.0f));
|
||||
|
||||
cam1.lookAtTarget(glm::vec3(0.0f, 0.0f, 0.0f));
|
||||
cam1.lookForward();
|
||||
cam1.updateVPM();
|
||||
glm::mat4 modelViewProj = cam1.getViewProj() * model;
|
||||
camera->lookAtTarget(glm::vec3(0.0f, 0.0f, 0.0f));
|
||||
camera->lookForward();
|
||||
camera->updateVPM();
|
||||
glm::mat4 modelViewProj = camera->getViewProj() * model;
|
||||
shaderProgram.setUniform("u_modelViewProj", modelViewProj);
|
||||
|
||||
// Render and buffer swap
|
||||
@@ -107,8 +106,8 @@ void Controller::run() {
|
||||
for(int i=0;i<20;i++) {
|
||||
glDrawElements(GL_TRIANGLES, numIndices, GL_UNSIGNED_INT, 0);
|
||||
model = glm::translate(model, glm::vec3(0.0f, 0.0f, 1.0f));
|
||||
cam1.updateVPM();
|
||||
glm::mat4 modelViewProj = cam1.getViewProj() * model;
|
||||
camera->updateVPM();
|
||||
glm::mat4 modelViewProj = camera->getViewProj() * model;
|
||||
shaderProgram.setUniform("u_modelViewProj", modelViewProj);
|
||||
}
|
||||
model = glm::translate(model, glm::vec3(0.0f, 0.0f, -20.0f));
|
||||
@@ -119,18 +118,12 @@ void Controller::run() {
|
||||
|
||||
// Check events, handle input
|
||||
gameEventHandler->handleEvents();
|
||||
cam1.updatePositionFromKeyboardInput(gameEventHandler->getCameraActionRegister(), deltaTime);
|
||||
cam1.updateDirectionFromMouseInput(gameEventHandler->getCursorDeltaX(), gameEventHandler->getCursorDeltaY());
|
||||
camera->updatePositionFromKeyboardInput(gameEventHandler->getCameraActionRegister(), deltaTime);
|
||||
camera->updateDirectionFromMouseInput(gameEventHandler->getCursorDeltaX(), gameEventHandler->getCursorDeltaY());
|
||||
|
||||
// Update window size
|
||||
if(gameWindow->getWindowWasResized()) {
|
||||
int new_window_width, new_window_height;
|
||||
glfwGetFramebufferSize(gameWindow->getGLFWwindow(), &new_window_width, &new_window_height);
|
||||
gameWindow->setWindowDimensions(new_window_width, new_window_height);
|
||||
glViewport(0, 0, new_window_width, new_window_height);
|
||||
cam1.updateAspectRatio(new_window_width, new_window_height);
|
||||
gameEventHandler->setFirstMouseInput(1);
|
||||
}
|
||||
if(gameWindow->getWindowWasResized())
|
||||
updateWindowSize();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -161,3 +154,12 @@ void Controller::error_callback(int error, const char* description) {
|
||||
(void)error;
|
||||
fprintf(stderr, "Error: %s\n", description);
|
||||
}
|
||||
|
||||
void Controller::updateWindowSize() {
|
||||
int new_window_width, new_window_height;
|
||||
glfwGetFramebufferSize(gameWindow->getGLFWwindow(), &new_window_width, &new_window_height);
|
||||
gameWindow->setWindowDimensions(new_window_width, new_window_height);
|
||||
glViewport(0, 0, new_window_width, new_window_height);
|
||||
camera->updateAspectRatio(new_window_width, new_window_height);
|
||||
gameEventHandler->setFirstMouseInput(1);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "Window.h"
|
||||
#include "EventHandler.h"
|
||||
#include "Camera.h"
|
||||
#include "ShaderProgram.h"
|
||||
#include "VertexBuffer.h"
|
||||
#include "defines.h"
|
||||
@@ -22,8 +23,11 @@ private:
|
||||
|
||||
void limit_framerate();
|
||||
|
||||
void updateWindowSize();
|
||||
|
||||
Window *gameWindow;
|
||||
EventHandler *gameEventHandler;
|
||||
Camera *camera;
|
||||
|
||||
const uint16_t MAX_FPS = 60;
|
||||
double deltaTime;
|
||||
|
||||
@@ -14,10 +14,8 @@ EventHandler::EventHandler(GLFWwindow *window)
|
||||
|
||||
void EventHandler::handleEvents() {
|
||||
|
||||
// Restore deltaCursorPos BEFORE polling events
|
||||
//deltaCursorPosX = 0.0f; deltaCursorPosY = 0.0f;
|
||||
|
||||
glfwPollEvents();
|
||||
|
||||
for(int i=0; i<CAMERA_ACTION_NUM_ITEMS; i++) {
|
||||
actionCameraRegister[i] = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user